Как вызвать методы мутатора в перегруженном конструкторе вместо назначения их в Java? - PullRequest
0 голосов
/ 23 февраля 2019
 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 Ответ

0 голосов
/ 23 февраля 2019

Все, что вам нужно сделать, это ссылаться на метод мутатора, как и любой другой метод:

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».

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

...