最近在维护一段别人写的代码,发现有类似下面例子的写法。可是我在我这儿总是编译不过。
刚才在网上查了一下,看到网上有篇文章也提到这样的写法了。可是为什么我编译不过呢?
我用的是JDK1.5public class AssertUtils {
    public static void assert(boolean condition) {
        if (!condition) {
            throw new MyAssertError();
        }
    }
}
提示错误为:标记“assert”上有语法错误,应为 Identifier※注:我是在这篇文章里头看到的这种写法。http://www.lifevv.com/java/doc/20080205003102230.html请各位大侠赐教!

解决方案 »

  1.   

    assert的话编译的时候是这样的javac -source 1.4 AssertUtils.java,因为assert是在jdk1.4之后推出的,jdk默认采用的是jdk1.3进行编译,所以要改为1.4
    执行的时候要加-ea。如:java -ea AssertUtils
      

  2.   


    谢谢你的回答。
    我有几个问题:
    1,我用的是JDK1.5  是用JDK1.5进行编译的。
    2,assert一般的写法我这里也是可以通过编译的。应该能说明不是JDK版本的问题吧。
       例如:assert false;
            assert false: "Hello World!";
       上面这两种写法都是可以通过编译的。
      

  3.   


    assert false; 
    assert false: "Hello World!"; 只见过这样的。
      

  4.   

    刚在http://tech.it168.com/a2009/0216/265/000000265447.shtml
    这篇文章中又看到了同样的用法。
    有没有人解释一下呀?
      

  5.   

    从 JDK 1.4 版本开始,assert 成了关键字,不能用作标识符(方法名、变量名等)了,之前是可以的。
      

  6.   

    好像还有一种可能Junit的包是3的不行,必须是4的PS:鄙人只在单元测试的时候用过assert关键字
      

  7.   


    你这个代码里,明显的assert作为了方法名使用
    而你自己说了,编译用的jdk是1.5的在jdk1.5中,assert是做为关键字的,所以你那样用作了方法名是编译不通过的assert是jdk1.4开始的新特性,所以要想使assert不作为关键字的话,要用jdk1.3的版本去编译,编译时会抛出关于assert的警告,但是编译可以通过
    javac -source 1.3 java文件名.java