2009-09-25 61 views

回答

14

我可以回答你最後一個問題。它們不是同一件事。 305是關於新的註釋,您可以將它們放入新的註釋中,這有助於提供合約系統對設計的程序化可見性。因此,如果某個方法不應該返回null,或者某個方法應該永遠不會收到null參數,那麼可以告訴系統分析註釋以在這段代碼中查找這個特定的情況。

308是關於能夠註釋更多的東西,如通用參數和類型轉換。我想這主要是爲了能夠抑制特定類型強制轉換的警告,而不必爲此目的聲明局部變量。 @SuppressWarnings註釋已經存在(而JSR-305將會定義新的註釋),但是在JSR-308中它可以應用於更多的案例。

根據this 308將成爲Java7的一部分,這將意味着它很穩定。 JSR-305不在列表中,所以它看起來並不像Java7那樣。

+0

如此,實際JSR-308僅僅是一個擴展的語言, 而那些跳棋(在項目頁面上討論)是可選的,並且在JDK中將不可用),對吧? – 2009-09-25 14:21:12

+0

看來這樣。這兩個提案一起工作,因爲它們是最有用的(這就是爲什麼JSR-308頁面鼓吹這種功能)。我沒有關於JDK7中的內容或不在的任何權威信息,但似乎JSR-305並沒有這樣做,但我可能錯了。 – Yishai 2009-09-25 14:47:14

+1

JSR 308已被推遲到Java:http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer 2012-12-05 13:57:23

1

對於未來的讀者,JSR 308正在集成到Java 7中。它的一些變化已經被推到了Java 7的公共測試版中。然而,JSR305並沒有削減。

+0

有了JSR308,Java7會提供一個標準的檢查器框架嗎? – 2009-11-18 17:14:08

+0

跳棋正在分發http://types.cs.washington.edu/jsr308。 JDK有可能捆綁它們,但是還沒有給出任何保證。 – notnoop 2009-11-18 17:32:00

+0

本文似乎表明,JSR-305將成爲Java 7的一部分:http://foday.java.net/pub/a/today/2008/09/11/jsr-305-annotations.html – 2011-05-19 08:49:10