JDK特性:断言
来源:互联网 发布:淘宝客服幽默催付话术 编辑:程序博客网 时间:2024/05/21 02:52
JDK1.4中引入的一个新特性之一就是断言(assert),为程序的调试提供了强有力的支持,以下的文档根据SUNTEC内容及相关内容组成。
源代码:
/**
* Simple examples of the use of the new assertion feature in JDK1.4
*
* @author S.Ritter 16/7/2001
**/
public class AssertExample {
public static void main(String[] args) {
int x = 10;
if (args.length > 0) {
try {
x = Integer.parseInt(args[0]);
} catch (NumberFormatException nfe) {
/* Ignore */
}
}
System.out.println("Testing assertion that x == 10");
assert x == 10:"Our assertion failed";
System.out.println("Test passed");
}
}
由于引入了一个新的关键字,所以在编译的时候就需要增加额外的参数,要编译成功,必须使用JDK1.4的javac并加上参数'-source 1.4',例如可以使用以下的命令编译上面的代码:
javac -source 1.4 AssertExample.java
以上程序运行使用断言功能也需要使用额外的参数(并且需要一个数字的命令行参数),例如:
java -ea AssertExample 1
程序的输出为:
Testing assertion that x == 10
Exception in thread "main" java.lang.AssertionError:
Our assertion failed
at AssertExample.main(AssertExample.java:20)
由于输入的参数不等于10,因此断言功能使得程序运行时抛出断言错误,注意是错误,这意味着程序发生严重错误并且将强制退出。断言使用boolean值,如果其值不为true则抛出AssertionError并终止程序的运行。
由于程序员的问题,断言的使用可能会带来副作用,例如:
boolean isEnable=false;
//...
assert isEnable=true;
这个断言的副作用是因为它修改程序变量的值并且没有抛出错误,这样的错误如果不细心检查很难发现。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它测试是否将断言打开了。
/**
* Simple examples test enable assertion feature in JDK1.4
*
* @author Cherami 25/4/2002
**/
public class AssertExample2 {
public static void main(String[] args) {
boolean assertEnable=false;
assert assertEnable=true;
if (assertEnable==false){
throw new RuntimeException("Assertions should be enable");
}
}
}
如果我们不使用-ea参数运行上面的程序,则控制台将输出:
Exception in thread "main" java.lang.RuntimeException:
Assertions should be enab
le
at AssertExample.main(AssertExample.java:14)
- JDK特性:断言
- JDK1.4新特性:断言
- JDK的新特性
- JDK 7 新特性
- JDK 5.0新特性
- JDK 1.6 新特性
- JDK 7 特性更改
- JDK 5.0新特性
- JDK 1.5 特性
- JDK 1.6 特性
- JDK 1.7 特性
- jdk新特性研究
- JDK各版本特性
- JDK 新特性
- jdk新特性资料
- JDK 6.0 新特性
- JDK新特性3
- jdk 1.7新特性
- 使用 finally 关键字来避免资源漏洞
- 不要重新分配被锁定对象的对象引用
- 六大代码问题检验你的Java知识
- ASP.Net 下上传Excel 并获取其内容
- IEEE OUI and Company_id Assignments
- JDK特性:断言
- 使用FileUpload组件实现文件上传
- GNU通用公共许可证(GPL)
- SQL Server2000 数据表导出XML方法
- cpu运行..100% 原因详解
- VML初步接触
- winxp 系统常规维护..会让电脑快不少的!
- 对超线程和双通道技术的正确认识
- 深入理解abstract class和interface