断言(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