Mentre si lavora su qualcosa, sono incappato in questo pezzo di codice:Il curioso caso di "se" in Java
if(true) {
String message = "Assignment possible";
}
if(true)
String message = "Time to leave earth"; // error!
Perché c'è un errore di compilazione nel secondo caso, quando è possibile scrivere 'se 'condizioni in java senza le parentesi graffe?
Il messaggio di errore non sembra dare una corretta informazioni:
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
mi manca qualcosa di ovvio qui? Qualcuno può spiegarlo?
Si trova nello stesso file? Penso che la definizione condizionale non funzioni, e la precedente affermazione ha già definito una stringa chiamata "messaggio". La seconda istruzione tenta di ridefinirla, e questo dà questo strano messaggio di errore. – 0xCAFEBABE
Dove useresti quella stringa 'message'? se non c'è un blocco non puoi usarlo dopo .. Non ha senso scrivere questo – Hacketo
Per essere ottuso, non è permesso perché [specifica della lingua] (http://docs.oracle.com/javase/specs /jls/se8/html/jls-14.html#jls-14.5) non lo consente; vedere il duplicato collegato per ulteriori spiegazioni approfondite. –