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.
这个
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.)