结合闭包(FCM)和泛型,是否有可能拥有完全类型安全的标准。
// The following works without a cast as Foo.id is a 'long' field.
List<Long> ids = session.createCriteria(Foo.class)
.setProjection(Foo#id)
.list();
// The following is a compilation error, as Foo.bar is defined as an int, and not a string
session.createCriteria(Foo.class)
.addRestriction(Restrictions.eq(Foo#bar,"blah"))
.list();
我已阅读 JPA 2.0 规范以了解类型安全标准。但还是有些欠缺。
此外,我只是在这里使用标准作为总体上改进代码类型安全性的示例。我大量使用 java 的静态类型来让我编码得更快。但结果是我时不时地被代码中忽略输入的部分所困扰。例如 HQL 查询。
最佳答案
您描述的代码不使用闭包,而是使用字段文字 ( method literals )。喜欢旧的class literal 。这些可以帮助制定标准 API。 JPA 2 source code generation work-around对于类型安全的查询接口(interface)可以用它代替。 如果它将成为 JDK7 的一部分。
关于java - 闭包意味着完全类型安全的标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1773221/