在一个具有自我保护能力的程序中,断言很常用。
断言机制允许在测试期间向代码中插入一些检查语句。当代码发布时,这些插入的检测语句将会被自动地移走。
Java语言引入了关键字assert。这个关键字有两种形式:

  1. assert 条件;
  2. assert 条件 : 表达式;

这两种形式都会对条件进行检测,如果结果为 false,则抛出一个 AssertionError 异常。在第二种形式中,表达式将被传入 AssertionError 的构造器,并转换成一个消息字符串。
要想断言x是一个非负数值,只需要简单地使用下面这条语句:

  1. assert x >= 0;
  2. // or 报道一个问题
  3. assert x >=0 : x;
  4. assert x >=0 : "x >= 0";

启动和禁用断言

在默认情况下,断言被禁用。可以在运行程序时用 -enableassertions-ea 选项启用:

  1. $ java -enableassertions MyApp
  2. $ java -ea MyApp

需要注意的是,在启用或禁用断言时不必重新编译程序。启用或禁用断言是类加载器(class loader)的功能。当断言被禁用时,类加载器将跳过断言代码,因此,不会降低程序运行的速度。
使用断言需要注意的点:

  • 断言失败是致命的、不可恢复的错误。
  • 断言检查只用于开发和测阶段