java断言机制(assert)
概述
断言使用的时候不是很多,测试时会使用,springboot中也有使用,总的来说断言还是要慎重。
在Java中,同样也有assert关键字,表示断言
在Java中,assert关键字是从JAVA SE 1.4 引入的
为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!)
如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。
语法
使用场景
断言使用场景
变量值明确
变量值如果很确定是某个值,则可以用断言。
执行不到的语句
某个地方语句确定是执行不会达到的,例如没有default的switch,则default可加上断言。
前置条件
前置条件(precondition)是一条语句,在方法执行前必须为真。
后置条件
后置条件(postcondition)是一条语句,当前置条件满足且完全执行方法后,它为真
检查类的状态
加一个内部方法,返回布尔值,当检查类状态正常时返回true。
不要用断言场景
不要用断言做参数检查
因为无论断言是启用还是禁用,都必须进行参数检查的,而断言是可能被禁用的。并且断言报出的AssertionError异常,不能准确反馈运行时异常(例如IllegalArgumentException,IndexOutOfBoundsException或NullPointerException)。
不要用断言来完成程序正确操作所需的任何工作
例如,假设你想要从列表名称中删除所有空元素,并且知道该列表包含一个或多个空值。
注意
当断言被启用时,程序会正常工作,但在禁用时会失败,因为它不再从列表中删除空元素。
点击查看代码
//动作先于断言
boolean re = names.remove(null);
assert re; //运行是否启用断言