为什么Java元编程支持不够好



我一直在问自己这个问题,特别是当我看到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

相关内容

  • 没有找到相关文章

最新更新