javac странный синтаксис - ошибка недопустимое начало выражения

Я обнаружил странную ошибку, которая, как мне кажется, является ошибкой. Вот минимальный случай, пожалуйста, не комментируйте полезность кода :)

class Foo {

    static public <X> int bar() { return 42; }

    public int baz() {
        return true ? 42 : (
            Foo.<Void>bar() > 42 ? 41 : 43
        )
        ;
    }
}

Результат:

err.java:7: illegal start of expression
        Foo.<Void>bar() > 42 ? 41 : 43
            ^

Я пробовал SUN SDK javac 1.6.0_13 и 1.6.0_21.
Ошибка исчезает, когда я либо

  • делаю bar () неуниверсальным (просто из любопытства, а не как вариант)
  • удаляю круглые скобки вокруг тернарного выражения в строке 7

Итак, это выглядит так, если e - это выражение, не всегда правильно писать (e) ?

9
задан Joachim Sauer 23 March 2011 в 01:54
поделиться