9

「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);
}

ただし、このコードを Android で実行すると、次のエラーが発生します。

java.lang.NoSuchFieldException: modifiers

modifiersJavaのクラスのフィールドですが、 AndroidFieldのクラスのフィールドではありません。Field

これは JavaFieldクラス コードです。

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

これは AndroidFieldクラス コードです。

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

上記の Java のコードは機能しますが、Android プラットフォームでは機能しません。

これを修正するにはどうすればよいですか?

4

2 に答える 2