Sto scrivendo il costruttore per la mia classe "principale". La prima cosa che fa è chiamare un metodo per usare commons-cli per analizzare la riga di comando. Se il metodo parseOptions
restituisce false, si è verificato un errore e il costruttore deve uscire.Ritorno anticipato da un costruttore di Scala
ho provato a scrivere il seguente codice
if (!parseOptions(args)) return
ma il compilatore si lamenta che ho una "definizione di un metodo di fuori dichiarazione di ritorno".
corto di chiamare System.exit(1)
o invertendo la booleana (e mettendo tutto il resto della mia logica all'interno della dichiarazione if
, c'è qualche modo per tornare "presto" da un costruttore?
Suppongo che avrei potuto avere il parseOptions
metodo di gettare un IllegalArgumentException
e cattura che nel mio Main
oggetto.
Grazie.
Mentre sono d'accordo con le altre risposte che nessun costruttore dovrebbe restituire normalmente se non era in grado per mettere l'istanza in uno stato che soddisfa gli invarianti della sua classe, mi chiedo perché tu sia contrario all'uso di "if"? –
Se ho diverse condizioni che possono portare a un ritorno anticipato, finirò con una cascata di 'se' molti livelli in profondità. – Ralph
Quindi? Se questa è la logica del tuo costruttore, questa è la logica del tuo costruttore. In genere è anche consigliato * non * di avere un sacco di logica complessa nei costruttori. Idealmente si limitano a "annotare" i valori che comprendono lo stato/valore dell'istanza. –