Java Mutator:初始化vs.传递给形参



我有这个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);
}
}

初始化在这里指的是将类的一些内部状态设置为一些默认值。通常,初始化是

的内部逻辑。
  1. 未公开为公共可调用方法
  2. 不需要提供数据来完成

这些是一般的规则。另一方面,mutator通常是可调用的方法,它将类的内部状态设置为与当前状态不同的状态。要设置的数据作为参数传递给方法。Java中的mutator是接受单个参数的方法,并遵循命名模式setXXX,其中XXX是类中被突变的属性的名称。方法的单个参数应该与被改变的属性具有相同的类型。在你的例子中:

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

setBoard是类型为Cell[]的属性board的变异体。实现可以很好地将board的当前值替换为传入的值,例如:

public void setBoard(Cell[] board) {
    this.board = board;
}

最新更新