1.断言的概念:
在程序中含有大量的异常检查,程序运行起来相当慢
断言机制允许在测试期间代码中插入一些检查语句。当代码发布时,这些插入的检测语句将会被自动的移走
断言的关键字是assert,这个关键字有两种形式:
assert 条件:
和
assert 条件:表达式
这两种形式都会对条件进行检测,如果结果为false,则抛出一个AssertionError异常。在第二种形式中,表达式将传入AssertionError的构造器,并转换为一个消息字符串
表达式部分的唯一目的是产生一个消息字符串
2.启用和禁用断言:
在默认情况下,断言被禁用。可以在程序运行时-enableassertions或-ea选项启用:
java -enableassertions MyApp
在启用或禁用断言时不必重新编译。启用或禁用断言是类加载器的功能。当断言被禁用时,类加载器将跳过断言代码,因此,不会降低程序运行的速度
也可以用选项-disableassertions或-da禁用某个特定类或包的断言:
java -ea:... -da:MyClass MyApp
对于系统类来说,需要使用-enablesystemassertions/-esa开关启用断言
3.使用断言完成参数检查:
什么时候应该选择使用断言呢?请记住下面几点:
1)断言失败是致命的、不可恢复的错误
2)断言检查只用于开发和测试阶段
4.java.lang.ClassLoader 1.0:
void setDefaultAssertionStatus(boolean b) 1.4
对于通过类加载器加载的所有类来说,如果没有显式地说明类或包的断言状态,就启用或禁用断言
void setClassAssertionStatus(String className,boolean b) 1.4
对于给定的类和它的内部类,启用或禁用断言
void setPackageAssertionStatus(String packageName,boolean b) 1.4
对于给定包和其子包中的所有类,启用或禁用断言
void clearAssertionStatus() 1.4
移去所有类和包的显式断言状态设置,并禁用所有通过这个类加载器加载的类的断言