JDK1.4特性assert的示例分析-成都快上网建站

JDK1.4特性assert的示例分析

这篇文章主要介绍了JDK1.4特性assert的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联专注于网站建设|成都企业网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都工商代办等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身定制品质网站。

源代码:

/**  * 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 enable at AssertExample.main(AssertExample.java:14)

感谢你能够认真阅读完这篇文章,希望小编分享的“JDK1.4特性assert的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


分享题目:JDK1.4特性assert的示例分析
文章转载:http://kswjz.com/article/gpgepd.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流