关于我们 』『 人才招聘 』『 学校地图 』『 NCIE介绍 』
首 页 | 新闻中心 | 课程详解 | 教学模式 | 师资团队 | 教学园地 | 就业专栏 | 在线报名 | 技术专栏 | 留言反馈 | 学员博客
咨询电话:028-86615118 ┆ 24小时咨询电话:13438098376 ┆ 就业服务:13438098376 ┆ 咨询群:35540887 ┆ 联系我们公交线路查询
课程推荐
在线咨询
咨询群: 35540887
杨老师: 我是杨老师,咨询请点这里
韩老师: 我是韩老师,咨询请点这里
最新开班信息
成都软件开发学习班
最新免费活动
学员交流
朗沃新闻
 

JDK1.4新特性:断言

录入时间:07-03-30 10:25:53  责任编辑:admin
摘要

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)

〖友情连接〗

成都知道 朗沃教育(重庆天熙) 中国国学网 四川行业通 J2ME世界
Sun 中国程序员社区 成都博科购书网 人事部信产部653工程 国家信息产业部NCIE

杨老师:
韩老师:
李老师:
何老师:
欧阳老师: