什么是默认的javac源模式(断言为标识符编译)?

时间:2012-11-11 10:57:17

标签: java compilation assert

根据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不是默认的源模式。那是哪一个呢?

1 个答案:

答案 0 :(得分:1)

在Java 7中,默认的源模式是1.7 according to Oracle's doc(请参阅-source选项)。 您所指的文档可能需要更新