< prev index next >

src/java.base/share/classes/jdk/internal/reflect/UnsafeFieldAccessorFactory.java

Print this page

        

@@ -33,11 +33,11 @@
         Class<?> type = field.getType();
         boolean isStatic = Modifier.isStatic(field.getModifiers());
         boolean isFinal = Modifier.isFinal(field.getModifiers());
         boolean isVolatile = Modifier.isVolatile(field.getModifiers());
         boolean isQualified = isFinal || isVolatile;
-        boolean isReadOnly = isFinal && (isStatic || !override);
+        boolean isReadOnly = isFinal && (isStatic || !override || field.getDeclaringClass().isHiddenClass());
         if (isStatic) {
             // This code path does not guarantee that the field's
             // declaring class has been initialized, but it must be
             // before performing reflective operations.
             UnsafeFieldAccessorImpl.unsafe.ensureClassInitialized(field.getDeclaringClass());
< prev index next >