根据Orcale的Java7 assert guide:
- source mode 1.3(默认值) - 编译器接受使用assert作为标识符的程序,但会发出警告。在此模式下,不允许程序使用assert语句。
- source mode 1.4 - 如果程序使用assert作为标识符,编译器将生成错误消息。在此模式下,允许程序使用assert语句。
我写了这样的课程:
package mm;
public class ClassTest {
public static void main(String[] arg) {
int assert = 1;
System.out.println(assert);
}
}
如果Oracle的信息正确(1.3是默认源模式),它应该编译好。但我得到这样的错误:
$ javac -version javac 1.7.0_04 $ javac -d bin src/mm/* src\mm\ClassTest.java:5: error: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier int assert = 1; ^ (use -source 1.3 or lower to use 'assert' as an identifier) src\mm\ClassTest.java:6: error: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier System.out.println(assert); ^ (use -source 1.3 or lower to use 'assert' as an identifier) 2 errors
我手动添加-source 1.3
并发出警告但编译正常。似乎Oracle的信息是错误的,1.3不是默认的源模式。那是哪一个呢?