我想將「NO_CACHE」設置爲newValue。這裏是我的代碼:使用Java反射的Android更改私有靜態最終字段?
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
是在Java中的Field
類中的字段,但它不是在一個領域Android上的Field
類。
這就是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平臺。
我該如何解決這個問題?
什麼是'CacheManager'? –
android.webkit.CacheManager – user1884025
如果它是Android專用的類,它將如何在Android之外工作? –