次のようなクラスがあります。
package com.aci.golfgames;
import java.util.ArrayList;
public class Course {
private String name;
private int noOfTees;
private ArrayList<Tee> tees;
public Course(){
// Build a course with some tees.
name = "ABC Country Club";
ArrayList<Tee> tees = new ArrayList<Tee>();
tees.add(new Tee("White", 126, 70.4));
tees.add(new Tee("Red", 128, 75.2));
tees.add(new Tee("Blue", 126, 71.4));
noOfTees = 3;
}
public String getCourseName(){
return this.name;
}
public ArrayList<Tee> getTees(){
return tees;
}
public int getNoOfTees(){
return this.noOfTees;
}
}
ArrayList フィールドteesをインスタンス化しようとすると、 Object Courseでフィールドとして宣言されたものとは異なる ArrayList を作成しているようです。IOW、this.teesはteesとは異なります。行を削除すると:
ArrayList<Tee> tees = new ArrayList<Tee>();
ArrayList がインスタンス化されていないため、実行時にtees.add(...)で Null Pointer 例外が発生します。
ここで何が問題なのですか?ArrayList をインスタンス化するにはどうすればよいですか? 注: tee ArrayList のエントリ数はオブジェクトごとに変化するため、単なる配列ではなく ArrayList になります。ここのコードは、テスト用にコースを 1 つ定義するだけです。
ありがとう。