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