簡體   English   中英

閉包意味着完全類型安全的標准?

[英]closures mean fully type-safe criteria?

結合使用閉包(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查詢。

您描述的代碼不使用閉包,而是使用字段文字方法文字 )。 像好老類的文字 這些可能有助於標准API。 類型安全查詢接口的JPA 2源代碼生成替代方法可以用它替代。 如果它將成為JDK7的一部分。

正如Thomas所指出的,這並不嚴格要求關閉。 目前尚無定論,因為沒人知道正在考慮什么提議。 尚不清楚FCM是否實際上是該提案的基礎,尤其是考慮到斯蒂芬·科爾本(Stephen Colebourne)似乎對任何人都對該公告感到驚訝。

很多人指出, Neal Gafter神秘地修改了Devoxx演示文稿宣布關閉的名稱,或多或少的正確性 ,以作為關閉格式的提示。 提醒您,修訂后的提案從美學上看看起來像FCM!

該規范確實包括您所引用的引用類型(在上一行的“方法引用”下),當然FCM也具有相同的引用。 是的,這絕對會讓您建議成為可能。 在閱讀此內容時,我的第一個念頭是,這將如何影響JPA / Hibernate和/或我們自己周圍的抽象層。 您的條件中是否有類型安全,可重構的方法引用? 真是的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM