是否可以使用反射获得易变的场?

kan*_*eda 1 java reflection

Class<? extends Class> clazz = MyClass.class.getClass();
try {
    Field field = clazz.getDeclaredField("mInstance");
    field.setAccessible(true);
    looper = (Looper) field.get(this);
} catch (NoSuchFieldException e1) {
    e1.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (IllegalArgumentException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

该字段声明如下: private volatile Object mInstance;

我收到了NoSuchFieldException.

Sot*_*lis 6

这个

Class<? extends Class> clazz = MyClass.class.getClass();
Run Code Online (Sandbox Code Playgroud)

应该

Class<?> clazz = MyClass.class; // or Class<MyClass>
Run Code Online (Sandbox Code Playgroud)

这被称为类文字.表达式导致Class给定类型的对象.调用getClass()一个Class实例将返回Class实例Class,不是MyClass.

(所有这些都假定该字段mInstance是在声明的MyClass.)