Java 闭包意味着完全类型安全标准?

Java 闭包意味着完全类型安全标准?,java,closures,criteria,type-safety,java-7,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

结合闭包(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();
//以下内容在没有转换为Foo.id的情况下可以工作,因为Foo.id是一个“long”字段。
列表ID=session.createCriteria(Foo.class)
.setProjection(Foo#id)
.list();
//以下是编译错误,因为Foo.bar被定义为int而不是字符串
session.createCriteria(Foo.class)
.addRestriction(Restrictions.eq(Foo#bar,“blah”))
.list();
我已经阅读了JPA2.0规范中的类型安全标准。但还是有点欠缺


此外,我只是在这里使用标准作为提高代码类型安全性的一个示例。我大量使用java的静态类型来加快代码编写速度。但结果是,我时不时地被忽略键入的代码部分所咬。例如HQL查询。

您描述的代码不使用闭包,而是使用字段文本。就像老好人一样。这些可能有助于标准API。可以用它替换类型安全查询接口的如果它将成为JDK7的一部分

您描述的代码不使用闭包,而是使用字段文本。就像老好人一样。这些可能有助于标准API。可以用它替换类型安全查询接口的如果它将成为JDK7的一部分

正如Thomas指出的,这并不严格要求闭包。鉴于没有人确切知道正在考虑什么样的提案,目前一切都悬而未决。目前尚不清楚FCM是否真的是该提案的基础,特别是考虑到斯蒂芬·科尔伯恩似乎和其他人一样对该公告表示怀疑

很多人都在暗示闭包可能采用什么形式。请注意,修改后的方案(美学上)更像FCM


该规范确实包含您引用的引用类型(在上行的“方法引用”下),当然FCM也有相同的引用类型。是的,这肯定会使你的建议成为可能。在读到这篇文章时,我的第一个想法是,在这方面,它将如何影响JPA/Hibernate和/或我们自己的抽象层。条件中的类型安全、可重构方法引用?没错。

正如托马斯指出的,这并不严格要求闭包。鉴于没有人确切知道正在考虑什么样的提案,目前一切都悬而未决。目前尚不清楚FCM是否真的是该提案的基础,特别是考虑到斯蒂芬·科尔伯恩似乎和其他人一样对该公告表示怀疑

很多人都在暗示闭包可能采用什么形式。请注意,修改后的方案(美学上)更像FCM


该规范确实包含您引用的引用类型(在上行的“方法引用”下),当然FCM也有相同的引用类型。是的,这肯定会使你的建议成为可能。在读到这篇文章时,我的第一个想法是,在这方面,它将如何影响JPA/Hibernate和/或我们自己的抽象层。条件中的类型安全、可重构方法引用?是啊。

让我直说吧。。。两天前宣布闭包将成为Java的一部分,您想知道这将如何影响JPA查询的创建吗?我不认为社区中有任何人已经计算出FCM式闭包的后果到了这种程度。让我直说吧。。。两天前宣布闭包将成为Java的一部分,您想知道这将如何影响JPA查询的创建吗?我不认为社区中有任何人已经计算出FCM式闭包的后果到了这种程度。谢谢,我只是想再看一眼。“使用闭包”是指FCM附带的字段文本。我当然希望Sun坚持这个建议,因为它提供的不仅仅是桌子的闭包。谢谢,我只是想再看一眼。“使用闭包”是指FCM附带的字段文本。我当然希望Sun坚持这一建议,因为它提供的不仅仅是表的闭包,方法文本(有一些限制)不难用记录器实现(参见easyMock)。字段文字更难(参见JPA2)。现在没有理由不在Java中使用方法和文字。即使javadoc也有它们。方法文本(带有一些约束)不难用记录器实现(参见easyMock)。字段文字更难(参见JPA2)。现在没有理由不在Java中使用方法和文字。甚至javadoc也有。