Class.getRecordComponent() javadoc doesn't specify its behavior if the accessor of a record component is not present

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Oct 10 20:03:23 UTC 2019


It's the usual question: do we fail when we access things reflectively 
that don't seem to be there (either fully or partially) ? Or do we 
silently ignore?

I know that we have examples of both; for instance, nestmates went the 
'throw an exception' path if a member of the nest cannot be found; but 
annotations went a different path, and annotations that are not found 
are simply discarded.

One might argue that annotations are 'metadata' so less crucial than 
properties such as record component-ness or nestmate-ness. But still 
there's a choice.

And, whatever we do, we should probably be consistent with any kind of 
error that could popup when parsing the record component attribute, such 
as illegal modifiers and such. But, I guess for missing annotations on a 
record component we should be consistent with the rest of the JDK, and 
just drop them on the floor.

Maurizio

On 10/10/2019 20:55, Harold Seigel wrote:
> The VM should throw a NoSuchMethodError exception in that case?
>
> Thanks, Harold
>
> On 10/10/2019 3:42 PM, Vicente Romero wrote:
>> that shouldn't happen, the compiler would generate the accessor if 
>> not present, I guess the VM should verify for that too
>>
>> Vicente
>>
>> On 10/10/19 2:36 PM, Remi Forax wrote:
>>> As the title says,
>>> Class.getRecordComponent() javadoc doesn't specify its behavior if 
>>> the accessor of a record component is not present.
>>>
>>> regards,
>>> Rémi
>>


More information about the amber-dev mailing list