Я столкнулся со странной ошибкой, которую я считаю ошибкой.Вот минимальный случай, пожалуйста, не комментируйте полезность кода:)
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) ?