RFR: JDK-8308913: Update core reflection for JEP 445 (preview) [v4]
Jim Laskey
jlaskey at openjdk.org
Fri Jun 2 18:12:07 UTC 2023
On Fri, 2 Jun 2023 17:25:20 GMT, Joe Darcy <darcy at openjdk.org> wrote:
>> src/java.base/share/classes/java/lang/Class.java line 1884:
>>
>>> 1882: reflective=true)
>>> 1883: public boolean isUnnamedClass() {
>>> 1884: return isSynthetic() && PreviewFeatures.isEnabled() && isTopLevelClass();
>>
>> Should this include more tests such as not abstract, final, package access, in an unnamed package, etc to accurately determine it's an unnamed class?
>
> Hmm. I think adding at least a check for ACC_FINAL should be fine as it should have near-zero cost on top of the existing predicate once the method get compiled. (In future iterations of the JEP, the idiom to identify isUnnamed will likely change.)
As mentioned in https://bugs.openjdk.org/browse/JDK-8308916 the expression should be `PreviewFeatures.isEnabled() && isSynthetic() && isTopLevelClass()` as `PreviewFeatures.isEnabled()` is a private static final test that will effectively make the full expression constant `false` when not in preview mode.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14165#discussion_r1214670484
More information about the core-libs-dev
mailing list