# JEP 500: reflection writing to a final field, same class file behaviour on 25 and on 26 === JDK 25 (class compiled --release 25) field reads : 9090 port() returns : 8080 === JDK 26, defaults WARNING: Final field port in class FinalFieldMutation$Config has been mutated reflectively by class FinalFieldMutation in unnamed module @ (file:/build/recap26/26/) WARNING: Use --enable-final-field-mutation=ALL-UNNAMED to avoid a warning WARNING: Mutating final fields will be blocked in a future release unless final field mutation is enabled field reads : 9090 port() returns : 8080 === JDK 26, --enable-final-field-mutation=ALL-UNNAMED (the opt-in the warning asks for) field reads : 9090 port() returns : 8080 === JDK 26, --illegal-final-field-mutation=deny (what a future default will look like) setInt refused : class FinalFieldMutation (in unnamed module @) cannot set final field FinalFieldMutation$Config.port (in unnamed module @), unnamed module @ is not allowed to mutate final fields === JDK 26, --illegal-final-field-mutation=debug (warning plus the offending stack trace) Final field port in class FinalFieldMutation$Config has been mutated reflectively by class FinalFieldMutation in unnamed module @ (file:/build/recap26/26/) at java.base/java.lang.reflect.Field.postSetFinal(Field.java:1534) at java.base/java.lang.reflect.Field.setFinal(Field.java:1449) at java.base/java.lang.reflect.Field.setInt(Field.java:1134) at FinalFieldMutation.main(FinalFieldMutation.java:22) field reads : 9090 port() returns : 8080 === JDK 26, JFR default settings, [no flag]: jfr print --events jdk.FinalFieldMutation jdk.FinalFieldMutation declaringClass = FinalFieldMutation$Config (classLoader = app) fieldName = "port" FinalFieldMutation.main(String[]) line: 22 events recorded: 1 === JDK 26, JFR default settings, [--enable-final-field-mutation=ALL-UNNAMED]: jfr print --events jdk.FinalFieldMutation jdk.FinalFieldMutation declaringClass = FinalFieldMutation$Config (classLoader = app) fieldName = "port" FinalFieldMutation.main(String[]) line: 22 events recorded: 1 === JDK 26, JFR default settings, [--illegal-final-field-mutation=deny]: jfr print --events jdk.FinalFieldMutation events recorded: 0