Questo perché un operatore ternario in Java assume il formato expression ? expression : expression
e si sta dando una dichiarazione come parte finale. Questo non ha senso in quanto una dichiarazione non dà un valore, mentre le espressioni lo fanno. Cosa deve fare Java quando scopre che la condizione è falsa e prova a dare il secondo valore? Non c'è valore.
L'operatore ternario è progettato per consentire di effettuare rapidamente una scelta tra due variabili senza utilizzare una dichiarazione completa if
- non è quello che si sta tentando di fare, quindi non utilizzarlo, la soluzione migliore è semplicemente :
public static AppConfig getInstance() {
if (mConfig != null) {
return mConfig;
} else {
throw new RuntimeException("error");
}
}
L'operatore ternario non è progettato per produrre effetti collaterali - mentre può essere fatto per la loro produzione, persone che leggono non si aspettano che, quindi è molto meglio usare una vera e propria if
dichiarazione da fare chiaro.
fonte
2012-12-15 11:42:50
perché 'throw' non è espressione –
"ritorno (throw new RuntimeException (" errore")) ;" - non puoi restituire una nuova eccezione di lancio() –
Il pattern Null Object è degno di nota qui. –