Android меняет закрытое статическое конечное поле с помощью Java Reflection?
Хочу установитьno_cache» быть новым значением. Вот мой код:
static void setFinalStatic(Object newValue) throws Exception
{
Field field = CacheManager.class.getDeclaredField("NO_CACHE");
field.setAccessible(true);
Field modifiersField=Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field,field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);
}
Но запуск этого кода на Android приводит к следующей ошибке:
java.lang.NoSuchFieldException: modifiers
я нахожуmodifiers
это поле вField
класс в Java, но это не поле вField
класс на андроид.
Это яваField
код класса:
http://www.docjar.com/html/api/java/lang/reflect/Field.java.html
Это андроидField
код класса:
http://www.oschina.net/code/explore/android-2.2-froyo/java/lang/reflect/Field.java
Приведенный выше код на Java может работать, но он не работает на платформе Android.
Как это исправить?