Review request:Updated JDK-8004728 Implement core reflection API for parameter reflection (original) (raw)

Peter Levart peter.levart at gmail.com
Thu Dec 20 06:51:16 UTC 2012


On 12/20/2012 01:04 AM, Zhong Yu wrote:

On Wed, Dec 19, 2012 at 5:47 PM, Peter Levart <peter.levart at gmail.com> wrote:

279 public Parameter[] getParameters() { 280 // TODO: This may eventually need to be guarded by security 281 // mechanisms similar to those in Field, Method, etc. 282 Parameter[] raw = privateGetParameters(); 283 Parameter[] out = new Parameter[raw.length]; 284 // Need to copy the cached array to prevent users from messing 285 // with it 286 for (int i = 0; i < raw.length; i++) { 287 out[i] = new Parameter(raw[i]); 288 } 289 return out; 290 }

together with the copy constructor in Parameter.java: 48 Parameter(Parameter p) { 49 this.name = p.name; 50 this.modifiers = p.modifiers; 51 this.executable = p.executable; 52 this.index = p.index; 53 } If I see right, then Parameter is an immutable object. You need not copy the Parameter objects when copying the array. Just do a shallow copy with Arrays.copy. (off topic, sorry) A question that I've been wondering : why do JDK methods return arrays, instead of something like List? To avoid dependencies among JDK packages? Then how about an interface java.lang.Sequence? It would be very useful for user applications as well. I guess because those methods were there before the java.util.List/Map times. Methods added later are perhaps just following the old style...

Regards, Peter

Zhong Yu



More information about the core-libs-dev mailing list