Assertion断言的使用

今天和几个哥们讨论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: java -ea:MyClass1 打开MyClass1的assertion
-da: java -da: MyClass1 关闭MyClass1的assertion
-ea: java -ea:pkg1 打开pkg1包的assertion
-da: java -da:pkg1 关闭pkg1包的assertion
-ea:... java -ea:... 打开缺省包(无名包)的assertion
-da:... java -da:... 关闭缺省包(无名包)的assertion
-ea:... java -ea:pkg1... 打开pkg1包和其子包的assertion
-da:... java -da:pkg1... 关闭pkg1包和其子包的assertion
-esa java -esa 打开系统类的assertion
-dsa java -dsa 关闭系统类的assertion


你可能感兴趣的:(Assertion断言的使用)