现在的位置: 首页 > 综合 > 正文

Assertion断言的使用

2018年05月16日 ⁄ 综合 ⁄ 共 1107字 ⁄ 字号 评论关闭

今天和几个哥们讨论JNI(Java Native Interface)时看到了代码中有几个断言(Assert)关键字的使用,但是执行的时候却不见起任何作用。

后来看了API才知道,JVM 断言默认是关闭的,执行的时候我们需要传递VM arguments参数(-ea)才行的哈。

下面为大家展现下Java 的Assertion的相关信息:

在看过我写的Java的演变历程(发展史)的兄弟都知道断言是JDK1.4的时候引入。

Assertion的语法:

assert  expression1;

assert  expression1:expression2;

Assertion的特点:

1、断言不具有继承性:断言是可以局部开启的。如:父类禁止断言,而子类开启断言。

2、断言中AssertionError是继承自Error的,因此你可以不在程序中catch它的。

Assertion的注意点:

assertion用于保证程序最基本、关键的正确性。

assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。

Assertion的使用:

断言继承assert(entity instanceof AbstractEntity);

断言赋值assert isAssertOpen = true; //如果开启了断言,isOpen的值将改为true 

断言测试assert Boolean : 断言成功;

最后给大家提供下参数使用:

-ea java -ea 打开所有用户类的assertion 
-da java -da 关闭所有用户类的assertion 
-ea:<classname> java -ea:MyClass1 打开MyClass1的assertion 
-da:<classname> java -da: MyClass1 关闭MyClass1的assertion 
-ea:<packagename> java -ea:pkg1 打开pkg1包的assertion 
-da:<packagename> java -da:pkg1 关闭pkg1包的assertion 
-ea:... java -ea:... 打开缺省包(无名包)的assertion 
-da:... java -da:... 关闭缺省包(无名包)的assertion 
-ea:<packagename>... java -ea:pkg1... 打开pkg1包和其子包的assertion 
-da:<packagename>... java -da:pkg1... 关闭pkg1包和其子包的assertion 
-esa java -esa 打开系统类的assertion 
-dsa java -dsa 关闭系统类的assertion

抱歉!评论已关闭.