Review request:Updated JDK-8004728 Implement core reflection API for parameter reflection

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<T>? 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