Escribo el constructor para mi clase "principal". Lo primero que hace es llamar a un método para usar commons-cli para analizar la línea de comando. Si el método parseOptions
devuelve falso, se ha producido un error y el constructor debería salir.Regreso temprano de un constructor de Scala
he intentado escribir el siguiente código
if (!parseOptions(args)) return
pero el compilador se queja de que tengo una "declaración de retorno del método fuera de la definición".
a pedir System.exit(1)
o invirtiendo el booleano (y poniendo todo el resto de mi lógica dentro de la instrucción if
, ¿hay alguna manera de volver "temprana" de un constructor?
Supongo que podría tener la parseOptions
método de lanzar un IllegalArgumentException
y coger que en mi objeto Main
.
Gracias.
Aunque estoy de acuerdo con las otras respuestas que ningún constructor debe devolver normalmente si no estaba en condiciones para poner la instancia en un estado que satisfaga las invariantes de su clase, me pregunto por qué eres reacio a usar 'if'? –
Si tengo varias condiciones que pueden dar como resultado un retorno anticipado, terminaré con una cascada 'if' de muchos niveles de profundidad. – Ralph
Entonces? Si esa es la lógica de tu constructor, esa es la lógica de tu constructor. En general, se aconseja * no * tener mucha lógica compleja en sus constructores. Idealmente, simplemente "anotan" los valores que comprenden el estado/valor de la instancia. –