Se si dispone di una classe cliente con un costruttore sovraccarico (predefinito e uno con parametri) qual è il modo corretto per impostare i membri della classe nel costruttore Sovraccaricato? Usando "questo" riferimenti o usando i metodi setter?Class best practice
Semplicemente non ero sicuro di quale fosse il metodo corretto.
public class Customer {
private String firstName;
private String lastName;
private int age;
public Customer() {}
//This Way
public Customer(String firstName, String lastName, int age)
{
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
// Or this way?
public Customer(String firstName, String lastName, int age)
{
setFirstName(firstName);
setLastName(lastName);
setAge(age);
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
Questa è l'unica risposta sensata finora. In effetti, diversi strumenti per la rimozione dei residui avvertiranno di chiamare i metodi non definitivi dai costruttori proprio per questo problema. (Se la classe non è definitiva ma i metodi setter sono altrettanto validi.) –
@KumarVivekMitra - Non mi piace la tua risposta, come indica il mio commento. –
@TedHopp, per favore leggi di nuovo la mia risposta ... penso che entrambi stessimo parlando della stessa cosa ... ancora mi lasci di nuovo scrivere qui ... Penso che tu stia adottando il principio "OCP" ,,, Le classi sono aperte per l'estensione, ma chiuse per la modifica .... E come so 'I costruttori non possono essere ereditati e quindi NON POSSONO essere ignorati, quindi è immutabile ....' –