小编use*_*025的帖子

Android使用Java Reflection更改私有静态final字段?

我想将"NO_CACHE"设置为newValue.这是我的代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

但是在Android上运行此代码会产生以下错误:

java.lang.NoSuchFieldException: modifiers
Run Code Online (Sandbox Code Playgroud)

我发现Java modifiers中的Field类是一个字段,但它不是FieldAndroid上类中的字段.

这是Java Field类代码:

http://www.docjar.com/html/api/java/lang/reflect/Field.java.html

这是Android Field类代码:

http://www.oschina.net/code/explore/android-2.2-froyo/java/lang/reflect/Field.java

Java中的上述代码可以工作,但它在Android平台上不起作用.

我该如何解决?

android

8
推荐指数
2
解决办法
2604
查看次数

标签 统计

android ×1