如何在Java中编译时断言?

Jam*_*mes 7 java

有时数据结构应该具有某些无法在Java中直接描述的关系,但是在编辑代码时尽早检查是很好的.经典的例子是数组足够大或者不同模块中的枚举具有相应的成员.

BOOST在C++中提供了一个很好的"静态断言"工具,当断言失败时甚至可以提供一半的错误; 有谁知道如何在Java中构建编译时断言工具?

编辑:我刚看到一个完美的例子:来自Eclipse的这个类有两个常量数组,假设长度相同.如果这是我的代码,我希望编译器告诉我它们是否有不同的长度.

For*_*ner 7

您可以使用许多工具

  • PMD
  • Checkstyle的
  • FindBugs的
  • 验证Jakarta Commons-lang中的方法(我们使用它而不是断言并保留它)
  • Cobertura/EMMA(代码覆盖).

这些和良好的单元测试的组合将抓住低悬的果实(以及一些更高级的东西)


ska*_*man 2

作为 Eclipse 等 IDE 的一部分的增量编译器可以配置为在查找合法 java 代码时抛出警告或错误,但可能会在运行时引起问题。您可以根据需要逐步调整这些设置,尽管它可能会开始变得具有侵入性和烦人性。