断言
- 语法
assert 条件
assert 条件:表达式
如果 结果为 false, 则抛出一个 AssertionError 异常。
在第二种形式中,表达式将被传人 AssertionError 的构造器, 并转换成一个消息字符串。
例如:
public static void main(String[] args) {
test01(-3);
}
public static void test01(int x){
assert x > 0 : x + "必须非负数";
System.out.println(x * x);
}
结果:
Exception in thread "main" java.lang.AssertionError: -3必须非负数
at com.hyq.java3.Assert.test01(Assert.java:10)
at com.hyq.java3.Assert.main(Assert.java:6)
若test01(3);
则结果是9.
- 开启禁用断言
在默认情况下, 断言被禁用。可以在运行程序时用 -enableassertions 或 -ea 选项启用:java -enableassertions MyApp
需要注意的是, 在启用或禁用断言时不必重新编译程序。 启用或禁用断言是类加载器( class loader) 的功能。
当断言被禁用时, 类加载器将跳过断言代码, 因此,不会降低程序运行的速度。
也可以在某个类或整个包中使用断言, 例如:
java -ea:MyClass -eaiconi.inycompany.inylib.. , MyApp
这条命令将开启 MyClass 类以及在 com.mycompany.mylib 包和它的子包中的所有类的断言。
选项 -ea 将开启默认包中的所有类的断言。
也可以用选项 -disableassertions 或 -da 禁用某个特定类和包的断言:
java -ea:... -da:MyClass MyApp
在idea中开启断言