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
中声明。
你应该使用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
另请参阅检索类对象
干杯!!