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
。
答案 0 :(得分:6)
此
Class<? extends Class> clazz = MyClass.class.getClass();
应该是
Class<?> clazz = MyClass.class; // or Class<MyClass>
这被称为类文字。表达式为给定类型生成Class
对象。在getClass()
个实例上调用Class
将返回Class
的{{1}}个实例,而不是Class
。
(所有这些都假设MyClass
中声明了mInstance
字段。)
答案 1 :(得分:0)
您应该使用MyClass.class
将在代码后运行简单测试:
class A {
public static void main(String[] args) {
System.out.println(A.class.getClass());
System.out.println(A.class);
}
}
输出是:
class java.lang.Class
class A
干杯!!