JDK1.4特性assert详解
创始人
2024-04-13 13:21:22
0

JDK1.4中引入的一个新特性之一就是断言(assert),为程序的调试提供了强有力的支持,以下的文档根据SUNTEC内容及相关内容组成。

源代码:

  1. /**  
  2. * Simple examples of the use of the new assertion feature in JDK1.4  
  3. *  
  4. * @author S.Ritter 16/7/2001  
  5. **/ 
  6. public class AssertExample {  
  7. public static void main(String[] args) {  
  8. int x = 10;  
  9. if (args.length > 0) {  
  10. try {  
  11. x = Integer.parseInt(args[0]);  
  12. } catch (NumberFormatException nfe) {  
  13. /* Ignore */ 
  14. }  
  15. }  
  16. System.out.println("Testing assertion that x == 10");  
  17. assert x == 10:"Our assertion failed";  
  18. System.out.println("Test passed");  
  19. }  

由于引入了一个新的关键字,所以在编译的时候就需要增加额外的参数,要编译成功,必须使用JDK1.4的javac并加上参数´-source 1.4´,例如可以使用以下的命令编译上面的代码:

javac -source 1.4 AssertExample.java

以上程序运行使用断言功能也需要使用额外的参数(并且需要一个数字的命令行参数),例如:

java -ea AssertExample 1

程序的输出为:

  1. Testing assertion that x == 10 
  2. Exception in thread "main" java.lang.AssertionError: Our assertion failed  
  3. at AssertExample.main(AssertExample.java:20) 

由于输入的参数不等于10,因此断言功能使得程序运行时抛出断言错误,注意是错误,这意味着程序发生严重错误并且将强制退出。断言使用boolean值,如果其值不为true则抛出AssertionError并终止程序的运行。

由于程序员的问题,断言的使用可能会带来副作用,例如:

  1. boolean isEnable=false;  
  2. //...  
  3. assert isEnable=true; 


这个断言的副作用是因为它修改程序变量的值并且没有抛出错误,这样的错误如果不细心检查很难发现。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它测试是否将断言打开了。

  1. /**  
  2. * Simple examples test enable assertion feature in JDK1.4  
  3. *  
  4. * @author Cherami 25/4/2002  
  5. **/ 
  6. public class AssertExample2 {  
  7. public static void main(String[] args) {  
  8. boolean assertEnable=false;  
  9. assert assertEnable=true;  
  10. if (assertEnable==false)  
  11. {  
  12. throw new RuntimeException("Assertions should be enable");  
  13. }  
  14. }  

如果我们不使用-ea参数运行上面的程序,则控制台将输出:

  1. Exception in thread "main"   
  2. java.lang.RuntimeException: Assertions should be enable at AssertExample.main(AssertExample.java:14) 

JDK1.4特性assert详解就介绍到这里,通过这个介绍希望你对JDK1.4特性assert有所了解。

【编辑推荐】

  1. JDK1.4在Windows下的环境配置
  2. JDK1.6在LINUX下的安装配置
  3. JDK1.5中新的语言特征浅析
  4. JDK、SDK、JRE、JVM概念详解
  5. JDK1.6的十大技术浅谈

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...