Java断言——assert(转自http://cnet…
2014-01-26 15:37
465 查看
Java断言——assert
Java从1.4 版本 开始提供了一个新特性——
断言
(
assertion )。在软件开发中,断言是一种经典的调试与测试方式。
简单来看
断言其实就是在程序中的一条语句(assert),它对一个boolean表达式进行测试,一个正确程序必须保证该表达式的值为true,如果该值为false,则说明程序已处于不正确的状态,运行将被终止并退出——即
断言用于保证程序最基本、 最 关键的正确性。
断言检查通常在开发和测试阶段开启。而在软件发布后 为提高 运行 性能,断言检查会被关闭。因此能够随时自由地选择开启或关闭断言检查显得非常重要,而这正是Java断言特性的重要功能之一。。
默认状态下断言检查是关闭的,可以在运行时通过 参数 -ea(e
nablea
ssertions) 开启断言检查,与之对应的是-da
(d
isenableablea
ssertions) 用于关闭断言检查,例如:
Java代码
java -ea myPackage.myProgram
//或者
java -enableassertions myPackage.myProgram
下文再进一步讲解-ea/-da参数的用法,让我们先来看看assert语句的语法吧。
assert的语法格式有以下两种:
Java代码
assert expression1;
assert expression1 : expression2;
expression1是布尔表达式,必须保证在程序运行是其值为真,否则将抛出AssertionError异常并终止运行。
expression2是可选的。它用于当expression1为假时,作为构造器参数传递给AssertionError异常类,因此expression2的类型必须是合法的AssertionError构造器的参数类型。AssertionError共支持7中类型的构造器参数,分别是:boolean、char、double、float、int、long和Object,它们将会根据相关规范转换成错误提示信息字符串。
参数-ea
& -da详解
-ea和-da的全名为-enableassertions和-disenableassertions,全名和缩写名有同样的功能。它们的含义为开启(-ea)或关闭(-da)断言功能。
通过-ea (或-da) 参数,可以打开 (或关闭) 某些类或者某些包的断言功能,
如果-ea(或-da)不带任何参数时:表示打开 (或关闭) 所有用户类的断言检查;如果带有包名称或者类名称
则表示打开 (或关闭) 这些类或包的断言检查;如果包名称后面跟有三个点 表示这个包及其子包都 打开 (或关闭) 断言检查 ;如果只有三个点则代表无名包;
下面表格罗列了参数含义
及其 例子:
请注意上表中的-esa 和
-dsa参数,他们与-ea、-da的唯一区别是,前者用于打开(或关闭)系统类的断言检查功能。所谓系统类
是指像java.lang.Object这样的Java系统类库中的类。
另外,你还可以使用Java
API来调整断言开启状态,
ClassLoader.setDefaultAssertionStatus():用于开启/关闭断言;
ClassLoader.setPackageAssertionStatus():用于开启/关闭某些包的断言;
ClassLoader.setClassAssertionStatus():用于开启/关闭某些类的断言;
ClassLoader.clearAssertionStatus:用于关闭断言;
在Eclipse中启用断言的方法:
方法1、Window-->Preferences-->Java-->Installed
JREs
选择当前正在使用的JDK条目,点击
Edit... 按钮,进入JRE Definition界面: 在 Default VM Arguments 栏输入 -ea (或
-enableassertions) 参数。
方法2、Run-->RunConfigurations,选择当前程序,并点击进入Arguments标签页,在VM
arguments 栏输入 -ea(-enableassertions)参数。
以上两个方法,前者针对全局设置、后者仅 仅 对当前运行的程序有效。
在Android中启用断言的方法:
设置系统属性debug.assert
,在命令行环境中执行:
Java代码
adb shell setprop debug.assert 1
即可。
Java从1.4 版本 开始提供了一个新特性——
断言
(
assertion )。在软件开发中,断言是一种经典的调试与测试方式。
简单来看
断言其实就是在程序中的一条语句(assert),它对一个boolean表达式进行测试,一个正确程序必须保证该表达式的值为true,如果该值为false,则说明程序已处于不正确的状态,运行将被终止并退出——即
断言用于保证程序最基本、 最 关键的正确性。
断言检查通常在开发和测试阶段开启。而在软件发布后 为提高 运行 性能,断言检查会被关闭。因此能够随时自由地选择开启或关闭断言检查显得非常重要,而这正是Java断言特性的重要功能之一。。
默认状态下断言检查是关闭的,可以在运行时通过 参数 -ea(e
nablea
ssertions) 开启断言检查,与之对应的是-da
(d
isenableablea
ssertions) 用于关闭断言检查,例如:
Java代码
java -ea myPackage.myProgram
//或者
java -enableassertions myPackage.myProgram
下文再进一步讲解-ea/-da参数的用法,让我们先来看看assert语句的语法吧。
assert的语法格式有以下两种:
Java代码
assert expression1;
assert expression1 : expression2;
expression1是布尔表达式,必须保证在程序运行是其值为真,否则将抛出AssertionError异常并终止运行。
expression2是可选的。它用于当expression1为假时,作为构造器参数传递给AssertionError异常类,因此expression2的类型必须是合法的AssertionError构造器的参数类型。AssertionError共支持7中类型的构造器参数,分别是:boolean、char、double、float、int、long和Object,它们将会根据相关规范转换成错误提示信息字符串。
参数-ea
& -da详解
-ea和-da的全名为-enableassertions和-disenableassertions,全名和缩写名有同样的功能。它们的含义为开启(-ea)或关闭(-da)断言功能。
通过-ea (或-da) 参数,可以打开 (或关闭) 某些类或者某些包的断言功能,
如果-ea(或-da)不带任何参数时:表示打开 (或关闭) 所有用户类的断言检查;如果带有包名称或者类名称
则表示打开 (或关闭) 这些类或包的断言检查;如果包名称后面跟有三个点 表示这个包及其子包都 打开 (或关闭) 断言检查 ;如果只有三个点则代表无名包;
下面表格罗列了参数含义
及其 例子:
参数 | 例子 | 说明 |
-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 |
综合使用 | java -dsa:MyClass1:pkg1 | 关闭MyClass1和pkg1包的assertion |
请注意上表中的-esa 和
-dsa参数,他们与-ea、-da的唯一区别是,前者用于打开(或关闭)系统类的断言检查功能。所谓系统类
是指像java.lang.Object这样的Java系统类库中的类。
另外,你还可以使用Java
API来调整断言开启状态,
ClassLoader.setDefaultAssertionStatus():用于开启/关闭断言;
ClassLoader.setPackageAssertionStatus():用于开启/关闭某些包的断言;
ClassLoader.setClassAssertionStatus():用于开启/关闭某些类的断言;
ClassLoader.clearAssertionStatus:用于关闭断言;
在Eclipse中启用断言的方法:
方法1、Window-->Preferences-->Java-->Installed
JREs
选择当前正在使用的JDK条目,点击
Edit... 按钮,进入JRE Definition界面: 在 Default VM Arguments 栏输入 -ea (或
-enableassertions) 参数。
方法2、Run-->RunConfigurations,选择当前程序,并点击进入Arguments标签页,在VM
arguments 栏输入 -ea(-enableassertions)参数。
以上两个方法,前者针对全局设置、后者仅 仅 对当前运行的程序有效。
在Android中启用断言的方法:
设置系统属性debug.assert
,在命令行环境中执行:
Java代码
adb shell setprop debug.assert 1
即可。
相关文章推荐
- 理解和正确使用Java中的断言(assert) - Leichelle的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/leichelle/article/deta
- java的断言(assert)
- java的断言(assert)
- Java中的断言(assert)
- 【Java】断言assert及Eclipse、Tomcat 开启断言方式
- java在eclipse中使用assert(断言)
- K:java 断言 assert 初步使用:断言开启、断言使用
- Java断言(assert)
- 【Java】断言中assertNotEquals与assertNotSame的区别
- java: 断言 assert
- java的断言(assert)
- java 断言 assert
- java关键字--assert(断言)
- java 断言 assert 初步使用:断言开启、断言使用
- (转)理解和正确使用Java中的断言(assert)
- java的断言(assert)
- java的断言(Assert)
- java中的断言处理assert
- Java中的断言(assert)
- java assert断言的用法