Проблема с отражением Java 17JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проблема с отражением Java 17

Сообщение Anonymous »

Попробуйте вызвать эту функцию, чтобы установить приватное статическое конечное значение. Этот код отражения работает на Java 11, но не работает на 17. Возникла ошибка исключения такого поля.

Код: Выделить всё

    public static void setFinalStatic(Field field, Object newValue) throws Exception {
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);
}

Код: Выделить всё

java.lang.NoSuchFieldException: modifiers
at java.base/java.lang.Class.getDeclaredField(Class.java:2610)
Я попробовал --add-opens java.base/java.lang.reflect=ALL-UNNAMED, но это не работает.
Есть ли какое-нибудь решение или обходной путь??

Подробнее здесь: https://stackoverflow.com/questions/747 ... tion-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»