Что такое исходный режим javac по умолчанию (утверждается как компиляция идентификатора)?

Согласно руководству по утверждению Java7:

  • исходный режим 1.3 (по умолчанию) — компилятор принимает программы, использующие assert в качестве идентификатора, но выдает предупреждения. В этом режиме программам не разрешается использовать оператор assert.
  • исходный режим 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 не является исходным режимом по умолчанию. Какой же тогда?


person wst    schedule 11.11.2012    source источник
comment
Я думаю, вы сами ответили на свой вопрос ;)   -  person Guillaume    schedule 11.11.2012
comment
Вероятно, не стоит использовать assert в качестве идентификатора в любой ситуации.   -  person NimChimpsky    schedule 11.11.2012
comment
@Guillaume: я только знаю, что это не 1.3, но какой именно? Я так понимаю вариантов всего два? Или можно выбрать 1.4, 1.5, 1.6 или 1.7?   -  person wst    schedule 11.11.2012
comment
@NimChimpsky: Да, я знаю, я сделал это только для практики и исследований.   -  person wst    schedule 11.11.2012


Ответы (1)


В Java 7 исходный режим по умолчанию — 1.7 в соответствии с в документ Oracle (см. параметр -source). Документ, на который вы ссылаетесь, вероятно, нуждается в обновлении.

person Guillaume    schedule 11.11.2012