java - 如何使用反射获取字段值中的类?

标签 java reflection

考虑以下代码

class Foo {

}

class Bar {
    private Foo foo = new Foo();
}

是否可以在Foo类中获取foo字段的类。我的意思是,我想在 Foo 中获取 Bar 类。问题当然是关于反射,而不是关于 new Foo(Bar.class)

最佳答案

如果想获取调用者Class,可以使用newish(Java 9中引入)StackWalker API:

class Foo {
    private static final StackWalker SW = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);

    public Foo() {
        Class<?> bar = SW.getCallerClass();
    }
}

class Bar {
    private Foo foo = new Foo();
}

如果您使用较旧的 Java 版本,则存在不受支持的 sun.reflect.Reflection.getCallerClass()

关于java - 如何使用反射获取字段值中的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61015214/

相关文章:

java - 如何使用Java反射读取泛型参数的类类型

java - 在Java中生成一个随机素数

java - 从 AES 加密字符串中删除\r 和\n

java - 如何为多种事件类型存储监听器

c# - 将 CsvHelper 自定义转换器应用于一组类的所有字符串属性

python - 属性错误 : 'module' object has no attribute '__file__' (own module installed using pip)

Java lambda 循环

java - 切换到特定 fragment 会产生奇怪的 java.lang.NullPointerException

c# - 如何使用 Reflection.Emit 添加引用

C# 泛型类型的声明