例如与
class Foo {
Integer bar;
}
我想知道为什么没有语言功能可以让我这样做
Foo.class.bar //yes, xxx.class returns something of java.lang.Class<T>
引用元字段栏?
我正在阅读 Pro JPA 2 Book,在我看来规范的元模型生成是必要的,因为这在 Java 中是不可能的。
注意,这是一个出于好奇的理论问题,我想从中获得一些见解,为什么这个功能没有实现。
---更新---
为了更详细地阐述我的问题,请考虑通过 Entity Graph API 在 JPA 中添加属性的示例:
EntityGraph<Foo> g = myEntityManager.createEntityGraph(Foo.class)
g.addAttributeNodes("bar")
在字符串“bar”和 Foo 的属性 bar
之间没有正式的链接(对于编译器/IDE)。
最佳答案
因为 .class
不是在编译时返回当前类的魔术字段,它只是一个 sugar替换 getClass()
方法,该方法只会在运行时在 Class
对象的实例上执行。实现您的“功能”需要重建整个概念。
回答您问题的最可信的理论将基于这样的想法,即当反射模型是用 Java 设计时,您的“功能”在当时看起来并不真正“有用”。
关于java - 为什么不能在 Java 中引用元字段或方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006306/