1

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

}
}
4

1 回答 1

1

在这种情况下,初始化是指将类的某些内部状态设置为某些默认值。通常,初始化是内部逻辑,即

  1. 不作为公共的、可调用的方法公开
  2. 不需要提供数据即可完成

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

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

setBoardboard是类型的 属性 的 mutator Cell[]。实现很可能只是用board传入的值替换当前值,例如:

public void setBoard(Cell[] board) {
    this.board = board;
}
于 2013-03-24T21:21:47.257 回答