RFR: JDK-8266670: Better modeling of access flags in core reflection [v3]
Roger Riggs
rriggs at openjdk.java.net
Mon Feb 14 21:48:10 UTC 2022
On Mon, 14 Feb 2022 20:52:28 GMT, Joe Darcy <darcy at openjdk.org> wrote:
>> Thanks for catching the typo Adam; I'll fix it in the next push.
>
>> Looks promising, some comments:
>>
>> The terminology in the JVMS is about modifiers; can the class name include the word Modifier, perhaps ModifierFlag(s)? Several of the modifiers are not related to "access".
>>
>> The `getXXXFlags()` methods in Class, etc. should mention the Set is immutable/unmodifiable. The post-Beans API signature would be just "flags()" without the Get prefix. Consistency with the current methods may tend to keep the prefix.
>>
>> The Set manipulation functions are not very smooth (but true for all Sets). Checking for `anyOf` or `allOf` a set of modifiers has to be written out as a boolean expression. Though `allOf` could create an intermediate set.
>
> The JVMS uses "access flags" terminology:
>
> JVMS 4.7 Attributes "The value of the access_flags item is a mask of flags used to denote access permissions to and properties of this class or interface. "
>
> JVMS 4.5 Fields "The value of the access_flags item is a mask of flags used to denote access permission to and properties of this field."
>
> JVMS 4.6 Methods "The value of the access_flags item is a mask of flags used to denote access permission to and properties of this method."
>
> JVMS 4.7.6 The InnerClasses Attribute "The value of the inner_class_access_flags item is a mask of flags used to denote access permissions to and properties of class or interface C as declared in the source code from which this class file was compiled."
>
> JVMS 4.7.24 The MethodParameters Attribute "The value of the access_flags item is as follows: ..."
>
> This consistent usage was the motivation to rename the enum class to "AccessFlags" compared to "ModifierFlag" as initially sketched in the bug.
>
> Agreed that the returned sets should be specified to be immutable.
>
> Some newer methods added to Class omit the "get" prefix while many older methods include it.
>
> I linked the RFE of this issue to the RFE for an ImmutableEnumSet.
Thanks for the updates and correction on terminology origin.
Adding "@ Override" in the implementations of `Member.accessFlags()` might be in order.
-------------
PR: https://git.openjdk.java.net/jdk/pull/7445
More information about the core-libs-dev
mailing list