以下java代码应该怎么做?
public class foo{
public static void main(String[] args){
boolean mybool=false;
assert (mybool==true);
}
}
这会引发断言错误吗?如果没有,为什么不呢? (我没有收到任何错误!)
答案 0 :(得分:4)
运行程序时,必须通过在命令行中添加“-ea”来在Java VM中启用断言:
java -ea -jar myprogram.jar
答案 1 :(得分:1)
Java语言断言很奇怪。你必须在启动命令行时启用它们,我不喜欢它。
出于这个原因,我倾向于使用第三方库来做我的断言。 Apache Commons Lang(通过Validator类),Spring(通过Assert类)甚至JUnit4(通过Assert类)都提供此功能,无论VM设置如何,它都可以工作。当您使用Java5静态导入时,它们与java断言一样容易使用,而且它们更灵活,而且它们允许您在异常中指定错误消息。
答案 2 :(得分:0)
这应该是AssertionErors
。
如果您使用的是Eclipse,则需要打开断言。它默认禁用它们。
为此,请将-ea添加到JVM参数中。
答案 3 :(得分:0)
如果在程序中可以访问断言,则会生成信息。
如果断言被禁用(这是默认值),则断言语句将不是executet,而mybool的值将为false。
如果启用了断言(jvm参数-ea),断言将被执行,并且副作用mybool将被设置为true。
您可以使用它来强制启用或禁用断言。例如,如果没有启用断言,我的TestSuite中的Test会出现故障,以便在运行测试时强制断言始终打开。