我有这个java mutator 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和numladder来自该类的构造函数。
我的理解是,我已经创建了一个mutator,首先设置一个空白板,然后放置一些滑道和梯子。然而,我的教授说setBoard方法不应该初始化板,它应该设置传递给参数的内容。我不太清楚这是什么意思。
Cell是下面的对象,
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);
}
}
初始化在这里指的是将类的一些内部状态设置为一些默认值。通常,初始化是
的内部逻辑。- 未公开为公共可调用方法
- 不需要提供数据来完成
这些是一般的规则。另一方面,mutator通常是可调用的方法,它将类的内部状态设置为与当前状态不同的状态。要设置的数据作为参数传递给方法。Java中的mutator是接受单个参数的方法,并遵循命名模式setXXX
,其中XXX是类中被突变的属性的名称。方法的单个参数应该与被改变的属性具有相同的类型。在你的例子中:
public void setBoard(Cell[] board){
// ...
}
setBoard
是类型为Cell[]
的属性board
的变异体。实现可以很好地将board
的当前值替换为传入的值,例如:
public void setBoard(Cell[] board) {
this.board = board;
}