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对象。在getClass()实例上调用Class将会为Class而不是Class返回MyClass实例。

(所有这些都假定在mInstance中声明了字段MyClass。)

07-24 09:45
查看更多