2009-06-15 72 views
7

有時候,數據結構應該具有某些不能直接用Java描述的關係,但是在編輯代碼時應儘早檢查。經典的例子是數組足夠大或者不同模塊中的枚舉具有相應的成員。如何在Java中編譯時斷言某些東西?

BOOST在C++中提供了一個很好的「靜態斷言」工具,當斷言失敗時甚至會提供一半體面的錯誤;有誰知道如何在Java中建立編譯時斷言設施?

編輯:我剛看到一個完美的例子:來自Eclipse的​​類有兩個假定長度相同的常量數組。如果那是我的代碼,我希望編譯器告訴我它們是否有不同的長度。

+3

我不知道我同意「數據結構應該具有某些不能直接在Java中描述的關係。」你的例子看起來無效。數組大小與程序其餘部分的關係可以通過用變量定義數組大小來表示。如果你在一個包裏有一個Enum,你爲什麼不簡單地引用它呢?事實上我想不出有多個Enums有相應元素的任何理由。如果Foo應該和Bar有相同的元素,那麼爲什麼不使用Foo呢?這不就是Enum的意義嗎? – 2009-06-15 22:11:50

+0

你能提供一個更具體的例子,你想用這種方式來斷言嗎? – 2009-06-16 00:46:51

回答

2

作爲IDE的一部分的漸進式編譯器(如Eclipse)可以配置爲在查找合法java代碼時發出警告或錯誤,但可能會在運行時導致問題。儘管它可能會開始侵入和煩人,但您可以儘可能地將這些設置逐步調高。

7

有許多工具可以使用

  • PMD
  • 的Checkstyle
  • FindBugs的
  • 驗證雅加達方法下議院琅(我們用它來代替斷言,並把它留在)
  • Cobertura/EMMA(代碼覆蓋率)。

這些和良好的單元測試組合能夠趕上低掛水果(和一些更高的東西,以及)

相關問題