Sto cercando di utilizzare class.getSimpleName() per l'espressione di un interruttore però mi dà un errore:Java istruzione switch utilizzando class.getSimpleName() dà costante espressa richiesta errore
Constant express required
I' Ho visto risposte che suggeriscono di cambiare le dichiarazioni delle variabili di espressione per avere degli inizializzatori che sono espressioni costanti in fase di compilazione. Tuttavia, questo non è possibile in questo caso.
C'è un modo per effettuare uno switch utilizzando class.getSimpleName() senza dover codificare i nomi delle classi?
codice Esempio
public class ClassA {
public static final String TAG = ClassA.class.getSimpleName();
...
}
public class ClassB {
public static final String TAG = ClassB.class.getSimpleName();
...
}
public class SomeOtherClass {
switch (express) {
case ClassA.TAG: // Error here
...
break;
case ClassB.TAG: // and here
...
break;
default:
...
break;
}
@Eran Questo non è un problema con il valore su cui si cambia, ma i valori dei casi stessi. –
@Eran Sì, sto usando java 7. – fahmy