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 ответ
Инициализация в этом контексте относится к установке некоторого внутреннего состояния вашего класса на некоторые значения по умолчанию. Как правило, инициализация является внутренней логикой, которая
- Не раскрывается как публичный, вызываемый метод
- Не требует предоставления данных для выполнения
Это общие правила. Мутаторы, с другой стороны, обычно являются вызываемыми методами, которые устанавливают внутреннее состояние класса в нечто иное, чем в настоящее время. Данные, которые будут установлены, передаются как аргумент методу. Мутаторы в Java - это методы, которые принимают один аргумент и следуют шаблону именования. setXXX
где XXX - имя свойства, мутирующего в классе. Одиночный аргумент метода должен иметь тот же тип, что и мутируемое свойство. Итак, в вашем примере:
public void setBoard(Cell[] board){
// ...
}
setBoard
мутатор для собственности board
типа Cell[]
, Реализация вполне может просто заменить текущее значение board
с тем, что было передано, например:
public void setBoard(Cell[] board) {
this.board = board;
}