Java 7 supporta la commutazione con Strings
come il codice qui sottoL'istruzione switch Java 7 con String usa il metodo equals()?
switch (month.toLowerCase()) {
case "january":
monthNumber = 1;
break;
case "february":
monthNumber = 2;
break;
default:
monthNumber = 0;
break;
}
fa Java chiamare il metodo equals()
su ogni String
caso? O si basa su ==
o ?
E` semplicemente equivalente a:
String month = month.toLowerCase();
if("january".equals(month)){
monthNumber = 1;
}else if("february".equals(month)){
monthNumber = 1;
}..
UPDATE:
La stringa nell'espressione interruttore viene confrontata con le espressioni associata a ogni caso etichetta come se metodo
String.equals
erano in uso.
Come i documenti sottolineano che il comportamento è come se fosse chiamato equals()
.
1) dovrei pensare che avrebbe dovuto, dal momento che non ha senso se non ha, è vero? 2) Hai guardato il codice sorgente? –
@HovercraftFullOfEels - Potrebbe usare '==' e fare affidamento su 'intern' - ma penserei che si spezzerebbe in molti casi. – OldCurmudgeon
@OldCurmudgeon: troppo rischioso, penserei. –