Во время работы над чем-то, я наткнулся на этот кусок кода:Любопытный случай «если» в Java
if(true) {
String message = "Assignment possible";
}
if(true)
String message = "Time to leave earth"; // error!
Почему возникает ошибка компиляции во втором случае, когда можно писать «, если 'условия в java без брекетов?
сообщение об ошибке, кажется, не дают должного информация:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression
Syntax error, insert "AssignmentOperator Expression" to complete Assignment
Syntax error, insert ";" to complete Statement
String cannot be resolved to a variable
message cannot be resolved to a variable
я упускаю что-то очевидное здесь? Может кто-нибудь объяснить это?
Это в том же файле? Я думаю, что условное определение не работает, и предыдущий оператор уже определил строку, называемую «сообщение». Второй оператор пытается переопределить его, и это дает это странное сообщение об ошибке. – 0xCAFEBABE
Где бы вы использовали эту строку 'message'? если нет блока, вы не сможете его использовать после .. Нет смысла писать это – Hacketo
Чтобы быть тупым, это запрещено, потому что [спецификация языка] (http://docs.oracle.com/javase/specs /jls/se8/html/jls-14.html#jls-14.5) не позволяет; см. связанный дубликат для более подробных объяснений. –