最近在维护一段别人写的代码,发现有类似下面例子的写法。可是我在我这儿总是编译不过。
刚才在网上查了一下,看到网上有篇文章也提到这样的写法了。可是为什么我编译不过呢?
我用的是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请各位大侠赐教!
刚才在网上查了一下,看到网上有篇文章也提到这样的写法了。可是为什么我编译不过呢?
我用的是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请各位大侠赐教!
执行的时候要加-ea。如:java -ea AssertUtils
谢谢你的回答。
我有几个问题:
1,我用的是JDK1.5 是用JDK1.5进行编译的。
2,assert一般的写法我这里也是可以通过编译的。应该能说明不是JDK版本的问题吧。
例如:assert false;
assert false: "Hello World!";
上面这两种写法都是可以通过编译的。
assert false;
assert false: "Hello World!"; 只见过这样的。
这篇文章中又看到了同样的用法。
有没有人解释一下呀?
你这个代码里,明显的assert作为了方法名使用
而你自己说了,编译用的jdk是1.5的在jdk1.5中,assert是做为关键字的,所以你那样用作了方法名是编译不通过的assert是jdk1.4开始的新特性,所以要想使assert不作为关键字的话,要用jdk1.3的版本去编译,编译时会抛出关于assert的警告,但是编译可以通过
javac -source 1.3 java文件名.java