作成したオブジェクトを、Javaで1つの配列から同じタイプの別の配列にコピーしようとしています。プログラムを実行すると、NullPointerExceptionが発生します。
関連するクラス関数は次のとおりです。
private int mState;
public Cell(int pRow, int pColumn, int pState) {
//other things
setState(pState);
}
public void setState(int pNewState) {
mState = pNewState;
}
public void setDead() {
mState = DEAD;
}
およびエラーが発生した行:
mFutureGeneration[i][j].setDead();
その配列は次のように定義されます
private Cell [][] mFutureGeneration;
次に、次のようにディメンション化されます
mFutureGeneration = new Cell[100][100];
内容は次の場所から受け取ります。
Cell [][] vSeedArray = new Cell[100][100];
これは次のように入力されます
for (int i = 0; i<100; i++) {
for (int j = 0; j<100; j++) {
int vNewState = mGenerator.nextInt(2) - 1;
vSeedArray[i][j] = new Cell(i,j,vNewState);
}
}
問題はコピーで発生していると思いますが、私は常にJavaが参照によってコピーされたという印象を受けていたため、なぜ失敗するのかわかりません。
内容をループでコピーします
for(int i = 0; i<vSeedArray.length; i++) {
for(int j=0; j<vSeedArray[i].length; j++) {
mCurrentGeneration[i][j] = vSeedArray[i][j];
}
}
どんな助けでもいただければ幸いです。
ありがとう。