断言(assertion)
assertion是一种经典的调试、测试方式.
在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个程序正确必须保证这个boolean表达式的值为true;如果该值为false,报错,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。
在语法上,为了支持assertion,Java增加了一个关键字assert。它包括两种表达式,分别如下:
- assert expression1;assert expression1: expression2;
在两种表达式中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象(Object) ,基本类型包括boolean,char,double,float,int和long。由于所有类都为Object的子类,因此这个参数可以用于所有对象。
实例代码:
Base.java
import java.lang.AssertionError;class Base{ public void baseMethod() { assert false : "Assertion failed:This is base ";// 总是assertion失败 System.out.println("Base Method"); }}
Derived.java
import java.lang.AssertionError;class Derived extends Base{ public void derivedMethod() { assert false: "Assertion failed:This is derive";// 总是assertion失败 System.out.println( "Derived Method" ); } public static void main( String[] args ) { try { Derived derived = new Derived(); derived.derivedMethod(); derived.baseMethod( ); } catch( AssertionError ae ) { System.out.println(ae); } }}
查看没有开启断言的情况:
javac Derived.java
java Derived
查看开启所有断言的情况java -ea Derived
查看仅开启Base的断言情况:
java -ea:Base Derived
只有一条路不能拒绝——那就是成长的路。