`

JAVA断言使用 1.4 推出的新特性

    博客分类:
  • java
 
阅读更多

常见的断言特性


  前置条件断言:代码执行之前必须具备的特性
  后置条件断言:代码执行之后必须具备的特性
  前后不变断言:代码执行前后不能变化的特性

断言使用方式


  断言可以有两种形式
  1.assert Expression1
  2.assert Expression1:Expression2
  其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。

起用断言


  断言在默认情况下是关闭的,要在编译时启用断言,需要使用source1.4标记 既javac source1.4 Test.java ,在运行时启用断言需要使用 -ea参数 。要在系统类中启用和禁用断言可以使用 -esa 和 -dsa参数。
  
例如:
public class AssertExampleOne{
   public AssertExampleOne(){}
   public static void main(String args[]){
      int x=10;
      System.out.println("Testing Assertion that x==100");
      assert x==100:"Out assertion failed!";
      System.out.println("Test passed!");
   }
}

如果编译时未加 -source1.4,则编译通不过
在执行时未加 -ea 时输出为
Testing Assertion that x==100
Test passed
jre忽略了断言的就代码,而使用了该参数就会输出为
Testing Assertion that x==100
Exception in thread "main" java.lang.AssertionError: Out assertion failed!
        at AssertExampleOne.main(AssertExampleOne.java:6)

断言的副作用


  由于程序员的问题,断言的使用可能会带来副作用 ,例如:
  boolean isEnable=false;
  //...
  assert isEnable=true;
  这个断言的副作用是因为它修改了程序中变量的值并且未抛出错误,这样的错误如果不细心的检查是很难发现的。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它来测试断言是否打开。

 public class AssertExampleTwo{

   public static void main(String args[]){
     boolean isEnable=false;
     //...
     assert isEnable=true;
     if(isEnable==false){
       throw new RuntimeException("Assertion shoule be enable!");
     }
   }
}

何时需要使用断言


  1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false
  2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
  3.使用断言测试方法执行的前置条件和后置条件
  4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)

什么地方不要使用断言


  断言语句不是永远会执行,可以屏蔽也可以启用
因此:
  1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
  2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值

参考:
http://jcp.org/en/jsr/detail?id=41
http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html
http://www-128.ibm.com/developworkers/cn/java/jdiag0723/
http://www-128.ibm.com/developworkers/cn/java/jmerlin/part9/

 

 

来自:http://www.blogjava.net/liulu/archive/2006/10/24/77005.html 

分享到:
评论

相关推荐

    Java_JDK1.4api手册中文版

    Java JDK 1.4是Java开发工具包的一个重要版本,它为开发者提供了丰富的编程接口(API),涵盖了Java语言的核心库、标准扩展库以及一些重要的新特性。本手册是针对这个版本的中文翻译,旨在帮助中国开发者更好地理解...

    Java断言(assert)

    Java断言是从 JDK 1.4 引入的,默认情况下是关闭的。断言可以在局部开启,但它不具备继承性,即父类可以禁止断言,而子类可以开启断言。 断言的使用场景 断言主要用于复杂的调试过程,用于程序执行结果的判断。断言...

    The Java Developers Almanac 1.4.rar

    《Java开发者年鉴1.4》是一部专门为Java程序员编写的参考手册,包含了丰富的Java编程知识。这个RAR压缩包内含的文件是"The Java Developers Almanac 1.4.chm",这通常是一个CHM(Compiled Help Manual)格式的文件,...

    旧版本JDK JDK1.4

    **Java Development Kit (JDK) 1.4:历史、特性与重要性** JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用程序的软件开发工具包,它包含了编译器、调试器、文档和Java运行环境等必要组件。JDK 1.4...

    编程语言JAVA断言使用.pdf

    `-source 1.4`指明了使用的Java编译器版本为1.4,而`-ea`(或`-enableassertions`的缩写)用于在运行时开启断言检查。 第二个示例程序是`AssertExampleTwo`类: ```java public class AssertExampleTwo { public ...

    jdk1.4绿色版

    总结来说,JDK 1.4绿色版是Java编程的一个重要里程碑,它的新特性和改进极大地推动了Java技术的发展,而绿色版则为开发者提供了更便捷的使用体验。对于学习和研究早期Java技术或者需要在不支持新版本的环境中运行旧...

    Java中断言使用案例

    这个概念在【标题】"Java中断言使用案例"中被强调,而【描述】进一步指出文档会探讨使用断言的优势及其用法。下面将详细阐述Java中断言的原理、好处以及如何使用。 1. **什么是Java断言**: Java断言是一种机制,...

    JAVA断言技术详解

    JAVA断言技术详解,1、What will happen when you attempt to compile and run the following code? (Assume that the code is compiled and run with assertions enabled) 1. public class AssertTest 2. { 3. ...

    java开发工具包jdk1.4

    Java 1.4是在Java 2平台标准版(J2SE)的基础上发布的,它引入了一些重要的新特性和改进,包括: 1. **异常链**:异常链允许一个异常实例引用另一个引发它的异常,使得调试和问题定位更加方便。 2. **断言...

    Selenium-java断言(90)【2021-02-02】.docx

    本文将主要围绕Selenium在Java环境下的断言操作进行详细阐述,并结合其他相关知识点进行扩展。 断言在软件测试中扮演着至关重要的角色,它是验证预期结果与实际结果是否一致的关键步骤。在Selenium中,我们可以通过...

    Java发展史_&_Java9、10新特性

    ### Java发展史与Java 9、10新特性详解 #### Java发展史 Java自1995年由Sun Microsystems发布以来,历经多个版本的发展和完善,成为当今最受欢迎的编程语言之一。下面简要回顾Java的发展历程及其重要里程碑: - *...

    jdk1.4绿色免安装版

    **Java Development Kit (JDK) 1.4 绿色免安装版详解** JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用...同时,其引入的许多新特性也为后续的Java版本奠定了基础,对整个Java生态产生了深远的影响。

    8、java断言..

    如果你认真学习每个ppt并自己敲完这些实例,你的java基础已经很优秀了!这些资料就是某些大学和培训机构一个学期或更长时间学习的! 为的是共同学习,共同进步! 注:本资料不承担任何法律责任!

    java开发常用工具 idea jdk1.4 redisdesktopManager setings文件.7z

    尽管1.4版本相对较老,但它是Java发展历史中的一个重要里程碑,引入了如断言(Assertions)、枚举(Enums)等特性。对于学习Java历史或支持遗留系统的人来说,这个版本依然有价值。j2sdk-1_4_2-windows-i586-64.7z...

    jre1.4.2.19_32位

    此外,Java 1.4还引入了断言(Assertions)功能,这对于单元测试和调试代码非常有用,同时增强了异常处理和多线程编程的特性。 然而,随着技术的发展,Java后续发布了多个新版本,如Java SE 5、6、7、8乃至9、10等...

    SCJP 中文大纲sun JAVA2认证程序员 平台1.4

    【SCJP 中文大纲sun JAVA2认证程序员 平台1.4】是针对Java编程语言的一项专业认证考试,主要测试考生对于Java 1.4版本的基础知识和技能掌握程度。以下将详细介绍大纲涵盖的主要知识点: **第一部分:声明和访问控制...

    jdk1.4压缩包

    总的来说,JDK 1.4是Java发展历程中的一个重要里程碑,它的许多特性在后续的Java版本中继续得到发展和完善,对Java编程语言和平台的演进产生了深远的影响。虽然现在JDK已经更新到了更高的版本,但了解JDK 1.4对于...

    Java8新特性教程(含代码).docx

    ### Java 8 新特性教程 #### 一、Lambda 表达式 Lambda 表达式是 Java 8 引入的一项重要新特性,它极大简化了编写匿名内部类的过程,提高了代码的简洁性和可读性。 **基础语法:** 1. **无参数,无返回值:** `...

    jdk1.4和jdk1.7版本

    Java Development Kit...JDK 1.4的特性为现代Java打下了坚实的基础,而JDK 1.7则进一步提升了开发效率和代码质量。对于学习Java历史或者需要在特定环境中运行旧代码的开发者来说,这些版本的JDK都是非常宝贵的资源。

    Java核心技术 第12版 开发基础+高级特性 英文原版

    《Java核心技术 第12版》是一本针对Java开发基础和高级特性的详尽教程,适合Java初学者和有经验的开发者。本版已更新至Java 17,涵盖了最新的语言特性。作者Cay S. Horstmann是美国圣何塞州立大学的计算机科学教授,...

Global site tag (gtag.js) - Google Analytics