Tengo problemas para usar varios constructores en Java.Constructor sobrecargado llamando a otro constructor, pero no como primera instrucción
lo que yo quiero hacer es algo como esto:
public class MyClass {
// first constructor
public MyClass(arg1, arg2, arg3) {
// do some construction
}
// second constructor
public MyClass(arg1) {
// do some stuff to calculate arg2 and arg3
this(arg1, arg2, arg3);
}
}
pero no puedo, ya que el segundo constructor no puede llamar a otro constructor, a menos que sea la primera línea.
¿Cuál es la solución común para tal situación? No puedo calcular arg2 y arg3 "en línea". Pensé que quizás crear un método de ayuda de construcción, que haría la construcción real, pero no estoy seguro de que sea tan "bonita" ...
EDIT: Usar un método de ayuda también es problemático ya que algunos de mis campos son finales, y no puedo configurarlos usando un método de ayuda.
A veces puede ser útil tener una opción para lanzar una excepción y es un mal hábito arrojarla de los constructores. Para estas situaciones, el método de fábrica es mejor – Gaim
Definitivamente prefiero la segunda opción, si pones el método de fábrica en la clase en lugar de en una clase diferente. La primera opción no le permite hacer los campos que asigna con los valores de parámetro 'final'. El compilador no puede decir que el método 'init' se llama una vez en cada constructor, y nunca fuera de un constructor. Si no le gusta el método de fábrica, consulte mi respuesta para otra opción sobre el cálculo de otros parámetros. – Jorn
@Jorn Estoy con Steve Yegge en las fábricas, siempre me han molestado. –