RFR: 8353835: Implement JEP 500: Prepare to Make Final Mean Final [v12]
Alan Bateman
alanb at openjdk.org
Sat Nov 15 08:59:20 UTC 2025
On Fri, 14 Nov 2025 22:05:47 GMT, Chen Liang <liach at openjdk.org> wrote:
>> Alan Bateman has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 59 commits:
>>
>> - Merge branch 'master' into JDK-8353835
>> - Cleanup
>> - More cleanup of Field.set API docs, including some restructure from Alex
>> - Cleanup
>> - Merge branch 'master' into JDK-8353835
>> - Update mutateFinals/modules test to exercise exports and opens cases
>> - Update Field.set spec to better align with setAccessible for public final field in public class in exported package
>> - Fix typo in java man page
>> - Add method to test if package exported
>> - Remove dup end body tag
>> - ... and 49 more: https://git.openjdk.org/jdk/compare/9eaa364a...7693e8fa
>
> src/java.base/share/classes/java/lang/reflect/Field.java line 1621:
>
>> 1619: private String notAccessibleToCallerMessage(Class<?> caller, boolean unreflect) {
>> 1620: String exportOrOpen = Modifier.isPublic(modifiers)
>> 1621: && Modifier.isPublic(clazz.getModifiers()) ? "exports" : "open";
>
> Suggestion:
>
> && Modifier.isPublic(clazz.getModifiers()) ? "export" : "open";
With InaccessibleObjectException we put the (contextual) keyword in double quotes so that the exception message has `"exports" $P` or `"opens" $P`, and hopefully guide the developer to the module declaration. For this IllegalAccessException case then it should probably be the same so that the message has `"exports" $P to module $M`, in which case it should be "opens" rather than "open".
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25115#discussion_r2529713811
More information about the core-libs-dev
mailing list