我一直在问自己这个问题,特别是当我看到JPA 2.0元模型是如何工作的时候…
例如,在JPA 2.0中,我们可以使用处理器,为实体实体创建一个元模型类Entity_
在JPA 2.0 Criteria api中可以使用这个元模型来拥有强类型的标准。
例如,你可以写:
criteriaBuilder.equal(u.get(User_.username), username);
不使用字段名作为字符串"username"。
我只是想知道为什么它不在Java中本地处理,而不必处理处理器和几个额外的元数据类。
它不仅适用于JPA,还可以利用反射api。
那么为什么我们不能在java类中直接访问元数据?有人能指出拥有这种功能的缺点吗?我想这可能是封装的问题,不是吗?
关于JPA2元模型的更多信息:http://www.inze.be/andries/2010/09/19/jpa2-metamodel-example/
Java 7不支持方法或字段/属性作为第一类对象。没有添加这些的原因是为了保持语言的简单。
然而,在我看来,Oracle已经采取了不同的观点(至少对于方法),您将能够在Java 8中使用方法引用,并且可能其中一个使用字段/属性引用的jsr将被接受并合并到Java 8或9中。
一些关于当前如何支持方法句柄的文章。Java 8将为此功能添加语法糖。
http://blogs.oracle.com/jrose/entry/method_handles_in_a_nutshell http://java.sun.com/developer/technicalArticles/DynTypeLang/http://www.java7developer.com/blog/?p=191