Как вызвать методы мутатора в перегруженном конструкторе вместо назначения их в Java?
public class Player
{
private String firstName;
private String lastName;
private int heightInInches;
private double weightInPounds;
private boolean goalScorer;
private boolean drinksBeer;
public Player(){
}
public Player(String firstName, String lastName, int heightInInches, double weightInPounds, boolean goalScorer, boolean drinksBeer){
if(lastName != null && lastName.trim().length() > 0){
if(lastName != null && lastName.trim().length() > 0){
if(heightInInches >= 0){
if(weightInPounds >= 0){
this.firstName = firstName;
this.lastName = lastName;
this.heightInInches = heightInInches;
this.weightInPounds = weightInPounds;
this.goalScorer = goalScorer;
this.drinksBeer = drinksBeer;
}
}
}
}
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public int getHeightInInches(){
return heightInInches;
}
public double getWeightInPounds(){
return weightInPounds;
}
public boolean getGoalScorer(){
return goalScorer;
}
public boolean getDrinksBeer(){
return drinksBeer;
}
public void setFirstName(String firstName){
if(firstName != null && firstName.trim().length() > 0){
this.firstName = firstName;
}else{
System.out.println("Error. Invalid First Name.");
}
}
public void setLastName(String lastName){
if(lastName != null && lastName.trim().length() > 0){
this.lastName = lastName;
}else{
System.out.println("Error. Invalid Last Name.");
}
}
public void setHeightInInches(int heightInInches){
if(heightInInches >= 0){
this.heightInInches = heightInInches;
}else{
System.out.println("Error. Invalid Height.");
}
}
public void setWeightInPounds(double weightInPounds){
if(weightInPounds >= 0){
this.weightInPounds = weightInPounds;
}else{
System.out.println("Error. Invalid Weight.");
}
}
public void setGoalScorer(boolean goalScorer){
this.goalScorer = goalScorer;
}
public void setDrinksBeer(boolean drinksBeer){
this.drinksBeer = drinksBeer;
}
}
В перегруженном конструкторе, как я могу вызвать метод мутатора для каждого поля вместо использования оператора присваивания? а также, если я вызываю методы мутатора, я должен удалить оператор if в конструкторе? (Я использую BlueJ) Я новичок, поэтому, пожалуйста, укажите, есть ли другие проблемы в моем коде. Заранее спасибо.
1 ответ
Все, что вам нужно сделать, это ссылаться на метод мутатора, как и любой другой метод:
public Player(String firstName, String lastName, int heightInInches, double weightInPounds, boolean goalScorer, boolean drinksBeer) {
setFirstName(firstName);
setLastName(lastName);
setHeightInInches(heightInInches);
setWeightInPounds(weightInPounds);
setGoalScorer(goalScorer);
setDrinksBeer(drinksBeer);
}
Кроме того, нет необходимости в этих операторах if, потому что они на самом деле не делают ничего полезного. Если вы явно не устанавливаете какие-либо значения, int
переменные по умолчанию 0
, double
по умолчанию будет 0.0
, boolean
по умолчанию будет false
, а также String
по умолчанию будет null
, Так что ваши заявления if делали такие вещи, как "Если имя null
не устанавливайте это.,, так что это будет просто null
в любом случае по умолчанию."
Если вы хотите сделать что-то вроде принудительной установки высоты в положительное число, вы всегда можете поместить эту логику в установщик.