java - 是否有可能使用反射获得 volatile 字段?

标签 java reflection

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() 将返回 ClassClass 实例,而不是 MyClass

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

关于java - 是否有可能使用反射获得 volatile 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25871672/

相关文章:

java - AES/CBC/PKCS5Padding Java 加密错误 - javax.crypto.BadPaddingException : Given final block not properly padded

java - 在负载下使用 netty 3.2.7 和 3.3.1 观察到的 ClosedChannelException

java - 在运行时获取属性类型

c# - 从 .Net 4.x 应用程序反射(reflect) WinRT 可执行文件

c# - 如何知道 PropertyInfo 是否是一个集合

Java 跟踪器/记录器

java - 如何传输用 Eclipse 编写的项目?

java - 创建 Android Intent 并指定目标 Activity 时,这个 ".class"语法是什么?

go - 使用反射访问结构中的结构字段

java - 如何以反射方式遍历数组字段?