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