2009-06-15 70 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(代码覆盖率)。

这些和良好的单元测试组合能够赶上低挂水果(和一些更高的东西,以及)

相关问题