使用新对象填充对象数组

时间:2015-05-10 22:30:42

标签: java arrays object

我试图用新对象填充对象数组。这是代码:

主要课程

scala> js.validate[LayerTreeNode]
res18: play.api.libs.json.JsResult[LayerTreeNode] = JsError(List((,List(ValidationError(error.expected.jsstring,WrappedArray())))))

董事会成员

public class Bejeweled extends JFrame{

public Bejeweled(){
    Board board = new Board();
    getContentPane().add(board);
    board.start();
}

public static void main(String[] args){
    Bejeweled game = new Bejeweled();
}

宝石类

public class Board extends JPanel{

final int BOARDHEIGHT = 8;
final int BOARDWIDTH = 8;
Gem[] gems;

public Board(){
    gems = new Gem[BOARDHEIGHT * BOARDWIDTH];
}

public void start(){
    fillBoard();
}

public void fillBoard(){
    Arrays.fill(gems, new Gem());
    for(Gem gem : gems){
        System.out.println(gem.type); //**This was expected to print random numbers**
    }
}
}

问题是所有对象看起来都是一样的。我知道我应该在Gem类中封装类型,但是我试图限制我在这里发布的代码量。

从主类创建一个新的Board,在Board类中,Gem []充满了新创建的Gems(类Gem)。

1 个答案:

答案 0 :(得分:2)

Arrays.fill使用您提供的值填充数组,在这种情况下,该值是Gem的特定实例。相反,您需要使用for循环并将每个数组元素设置为不同的Gem

for(int i = 0; i < gems.length; i++) {
    gems[i] = new Gem();
}

请注意,如果你真的有一个8x8的电路板,那么Gem[8][8]Gem[8*8]要好得多。

相关问题