java - 闭包意味着完全类型安全的标准?

标签 java closures criteria type-safety java-7

结合闭包(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/

相关文章:

java - SWT 树和 TreeItem : Remove or change the drawing behavior of the expand/collapse indicator

javascript - 封闭件 - 使用后可变变化

scala - Scala 中的闭包

java - JPA CriteriaBuilder 方法 : keys and values. 如何使用它们?

java - Hibernate 将值(或部分)与 2 列进行比较

Java JPA boolean 字段数据库

java - 同时配对

java - Spring Data JPA - 按 Id 绑定(bind)而不是对象

java - java中的逻辑十进制格式

javascript - 执行上下文何时创建?