Android: изменение частного статического финального поля с использованием java-отражения - программирование
Подтвердить что ты не робот

Android: изменение частного статического финального поля с использованием java-отражения

Измените личное статическое конечное поле с использованием отражения Java

Я выполнил инструкции в приведенной выше ссылке, чтобы изменить приватное статическое конечное поле, используя java-отражение. У меня есть объект с именем "data". Внутри "данных" есть частная статическая конечная переменная с именем "type". Я хочу установить "тип" равным нулю. Вот мой код.

Field field = data.getClass().getDeclaredField("type");
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(data, null);

Я попытался сделать это на Java 1.7 с похожим кодом, и он сработал. Но запуск этого кода на Android вызывает следующую ошибку: java.lang.NoSuchFieldException: модификаторы

Я думаю, что "модификаторы" не являются полем в классе Field на Android.

Как это исправить?

4b9b3361

Ответ 1

Это работает.

Field field = data.getClass().getDeclaredField("type");
field.setAccessible(true);
field.set(data, null);