关于java中的assert的一个问题

磨叽小光 2009-09-16 07:02:56
最近在维护一段别人写的代码,发现有类似下面例子的写法。可是我在我这儿总是编译不过。
刚才在网上查了一下,看到网上有篇文章也提到这样的写法了。可是为什么我编译不过呢?
我用的是JDK1.5

public class AssertUtils {
public static void assert(boolean condition) {
if (!condition) {
throw new MyAssertError();
}
}
}


提示错误为:标记“assert”上有语法错误,应为 Identifier

※注:我是在这篇文章里头看到的这种写法。http://www.lifevv.com/java/doc/20080205003102230.html

请各位大侠赐教!
...全文
276 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovecj6185 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 iamag 的回复:]
最近在维护一段别人写的代码,发现有类似下面例子的写法。可是我在我这儿总是编译不过。
刚才在网上查了一下,看到网上有篇文章也提到这样的写法了。可是为什么我编译不过呢?
我用的是JDK1.5
Java codepublicclass AssertUtils {publicstaticvoidassert(boolean condition) {if (!condition) {thrownew MyAssertError();
}
}
}

提示错误为:标记“assert”上有语法错误,应为 Identifier

※注:我是在这篇文章里头看到的这种写法。http://www.lifevv.com/java/doc/20080205003102230.html

请各位大侠赐教!
[/Quote]

你这个代码里,明显的assert作为了方法名使用
而你自己说了,编译用的jdk是1.5的

在jdk1.5中,assert是做为关键字的,所以你那样用作了方法名是编译不通过的

assert是jdk1.4开始的新特性,所以要想使assert不作为关键字的话,要用jdk1.3的版本去编译,编译时会抛出关于assert的警告,但是编译可以通过
javac -source 1.3 java文件名.java
zjx2388 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zrcvic 的回复:]
从   JDK   1.4   版本开始,assert   成了关键字,不能用作标识符(方法名、变量名等)了,之前是可以的。
[/Quote]


好像还有一种可能Junit的包是3的不行,必须是4的

PS:鄙人只在单元测试的时候用过assert关键字
m_angle_m 2009-09-17
  • 打赏
  • 举报
回复
6楼正解
zrcvic 2009-09-16
  • 打赏
  • 举报
回复
从 JDK 1.4 版本开始,assert 成了关键字,不能用作标识符(方法名、变量名等)了,之前是可以的。
磨叽小光 2009-09-16
  • 打赏
  • 举报
回复
刚在http://tech.it168.com/a2009/0216/265/000000265447.shtml
这篇文章中又看到了同样的用法。
有没有人解释一下呀?
sforiz 2009-09-16
  • 打赏
  • 举报
回复

assert false;
assert false: "Hello World!";


只见过这样的。
磨叽小光 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yqsshr 的回复:]
assert的话编译的时候是这样的javac -source 1.4 AssertUtils.java,因为assert是在jdk1.4之后推出的,jdk默认采用的是jdk1.3进行编译,所以要改为1.4
执行的时候要加-ea。如:java -ea AssertUtils
[/Quote]

谢谢你的回答。
我有几个问题:
1,我用的是JDK1.5 是用JDK1.5进行编译的。
2,assert一般的写法我这里也是可以通过编译的。应该能说明不是JDK版本的问题吧。
例如:assert false;
assert false: "Hello World!";
上面这两种写法都是可以通过编译的。
yqsshr 2009-09-16
  • 打赏
  • 举报
回复
如有不到之处欢迎赐教..
yqsshr 2009-09-16
  • 打赏
  • 举报
回复
assert的话编译的时候是这样的javac -source 1.4 AssertUtils.java,因为assert是在jdk1.4之后推出的,jdk默认采用的是jdk1.3进行编译,所以要改为1.4
执行的时候要加-ea。如:java -ea AssertUtils

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧