parametros - metodo void java
¿Deberíamos tener siempre un constructor de argumento cero en una clase? (4)
Como Andy Thomas-Cramer ya ha señalado, es incluso imposible:
class NeedsToBeImmutable {
// For a class to be immutable, its reachable state
// MUST be reached through a final field
private final String stuff;
//!!Compile error!!
public NeedsToBeImmutable(){}
public NeedsToBeImmutable(String stuff){
this.stuff = stuff;
}
//getters...
}
¿Debería cada clase de Java tener un constructor de argumento cero?
No, no tiene sentido crear siempre cero constructores de argumentos, los siguientes escenarios son ejemplos en los que tiene sentido proporcionar al menos un constructor de argumentos.
- Dependencias requeridas que la propia clase no puede crear.
- No hay valores predeterminados sensatos para las propiedades.
Casos en los que desea tener / necesita un constructor de argumento cero:
- Desea cumplir con la especificación de JavaBeans (tiene sentido para objetos de datos simples).
- Todos los campos se pueden inicializar usando valores predeterminados sensatos.
- Quieres usar un framework que lo necesite.
Uno de los argumentos erróneos para tener un constructor de cero argumentos en mi opinión es una larga lista de argumentos. Para eso hay mejores soluciones que aceptar inicializar un objeto que no está en un estado seguro después de la creación:
- Usando el patrón Builder.
- Proporcionar objetos contenedores especializados para configurar una instancia a través del constructor.
- Proporcione múltiples constructores donde los argumentos básicos de cada uno sean los parámetros requeridos que no pueden tener valores predeterminados asignados.
No. Sin embargo hay excepciones. Por ejemplo, si pretende que su clase contenga solo métodos utilitarios estáticos o una clase singleton o una clase con constantes simples, debe crear un constructor privado sin argumentos para evitar que se cree una instancia explícita.
No
Si no tiene sentido crear una instancia de la clase sin proporcionar ninguna información al constructor, no es necesario tener un constructor de argumento cero.
Un buen ejemplo es la clase java.awt.Color , cuyos elementos son argumentados.