Я играю с синтаксисом Java, так что это вопрос возникает исключительно из любопытства. Этот фрагмент кода:
http://www.google.com
Object val = 5 <- 4;
компилируется не, потому что над меткой (http
) "следует инструкция". Следующие два варианта компилируются:
http://www.google.com
{ Object val = 5 <- 4; }
и
Object val;
http://www.google.com
val = 5 <- 4;
В обоих случаях я переключился с объявления на выражение. Это заставляет меня задаться вопросом, что именно является "выражением" в Java, но doc говорится:
В дополнение к операторам выражений существуют два других вида операторов: заявления декларации и операторы потока управления. Оператор объявления объявляет переменную.
JLS просто говорит (по меткам), что
Идентификатор объявляется меткой непосредственно содержащегося Statement.
Он ничего не говорит о "выражениях".
Я что-то пропустил, или это просто нечеткая/неправильная спецификация?