【发布时间】:2014-12-12 18:29:17
【问题描述】:
我知道这可能是一个超基本的 Java 问题,但我是 Java 的新手。
假设我在 Java 中有以下两个类:
public class Cell {
private Integer value;
public Integer setValue(Integer value) {
this.value = value;
}
public Integer getValue() {
return value;
}
}
public class Grid {
private Cell[][] cells = new Cell[9][9];
public void setCell(int row, int column, Integer value){
cells[row][column].setValue(value);
}
}
更不用说如果行或列超过 8 则代码是不安全的,我的理解是 Grid 为 9 x 9 Cells 分配内存,因此方法 setCell(1,1, 10) 应该没问题(即不会导致 NullPointerException),对吗?但是,在为这种情况进行 JUnit 测试时,这正是我遇到的错误。如果不是
,我只能克服这个错误 cells[row][column].setValue(value);
我用
cells[row][column] = new Cell();
cells[row][column].setValue(value);
但我的印象是我实例化了两次 Cell。我在这里想念什么?是指令
private Cell[][] cells = new Cell[9][9];
只是分配结构(即指针)来保存 Cell 对象而不实际为对象本身保留内存?
谢谢!
@Tryskele
【问题讨论】: