Java Mutator: инициализация или передача параметра

У меня есть этот Java-мутатор setBoard,

public void setBoard(Cell[] board){
        for(int i=0; i < board.length; i++)
            this.board[i] = new Cell(0, "E");   
        makeChutes(numChutes);
        makeLadders(numLadders);
}

makeChutes и makeLadders - это методы того же класса, что и setBoard. Они размещают желоба и лестницы в случайных местах по всей доске. numChutes и numLadders происходят из конструктора для этого класса.

Насколько я понимаю, я создал мутатор, который сначала устанавливает пустую доску, а затем размещает некоторые желоба и лестницы. Однако мой профессор говорит, что метод setBoard не должен инициализировать плату, вместо этого он должен установить то, что передается параметру. Я не совсем уверен, что это значит.

Клетка является следующим объектом,

public class Cell{

private String type;
private int space;

public Cell(){
}

public Cell(int m, String r){
    this.space = m;
    this.type = r;
}
public void setType(String r){
    this.type = r;
}
public void setSpace(int m){
    this.space = m;
}
public boolean isChute(){
    return type.equals("C");
}
public boolean isLadder(){
    return type.equals("L");
}
public boolean isEmpty(){
    return !type.equals("C") && !type.equals("L");
}
public String toString(){
    return this.type + Math.abs(this.space);

}
}

1 ответ

Инициализация в этом контексте относится к установке некоторого внутреннего состояния вашего класса на некоторые значения по умолчанию. Как правило, инициализация является внутренней логикой, которая

  1. Не раскрывается как публичный, вызываемый метод
  2. Не требует предоставления данных для выполнения

Это общие правила. Мутаторы, с другой стороны, обычно являются вызываемыми методами, которые устанавливают внутреннее состояние класса в нечто иное, чем в настоящее время. Данные, которые будут установлены, передаются как аргумент методу. Мутаторы в Java - это методы, которые принимают один аргумент и следуют шаблону именования. setXXXгде XXX - имя свойства, мутирующего в классе. Одиночный аргумент метода должен иметь тот же тип, что и мутируемое свойство. Итак, в вашем примере:

public void setBoard(Cell[] board){
    // ...
}

setBoard мутатор для собственности boardтипа Cell[], Реализация вполне может просто заменить текущее значение board с тем, что было передано, например:

public void setBoard(Cell[] board) {
    this.board = board;
}
Другие вопросы по тегам