Как вызвать методы мутатора в перегруженном конструкторе вместо назначения их в 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 в любом случае по умолчанию."

Если вы хотите сделать что-то вроде принудительной установки высоты в положительное число, вы всегда можете поместить эту логику в установщик.

Другие вопросы по тегам