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();
}
字段声明如下:
private volatile Object mInstance;
我收到一个 NoSuchFieldException
。
最佳答案
这个
Class<? extends Class> clazz = MyClass.class.getClass();
应该是
Class<?> clazz = MyClass.class; // or Class<MyClass>
这被称为类文字。该表达式生成给定类型的 Class
对象。在 Class
实例上调用 getClass()
将返回 Class
的 Class
实例,而不是 MyClass
。
(所有这些都假定字段 mInstance
是在 MyClass
中声明的。)
关于java - 是否有可能使用反射获得 volatile 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25871672/