1

スーパークラス オブジェクトの静的コレクションに 2 つのサブクラス オブジェクトを追加しようとしています。ただし、コレクションにオブジェクトを追加しようとすると、null ポインター例外が発生し、その理由を突き止めようとしています。

public class MoverLogic{
    static Collection<Super> superCollection;

    public static void main(String[] args) {
    SubAlpha sub1 = new SubAlpha();
    SubBeta sub2 = new SubBeta();
    superCollection.add(sub1); //I'm getting the null pointer exception here
    superCollection.add(sub2);
}
4

4 に答える 4

1

superCollection使用する前に初期化する必要があります。

于 2013-10-21T16:49:49.917 に答える
0

を初期化していませんsuperCollection。にあるものの前に、次のmainように記述します。

superCollection = new ArrayList<Super>();

実際のコレクション参照を変更しない場合は、宣言で直接作成してfinal修飾子を追加すると便利な場合があります。

static final Collection<Super> superCollection = new ArrayList<Super>();

addまたは要素を引き続き使用できremoveますが、他の要素に再割り当てすることはできません。

注:ニーズに合わない場合はArrayList、別の具象実装に変更することもできます。Collection

于 2013-10-21T16:50:33.893 に答える
0

コレクションオブジェクトを作成する必要があります。

 static List<Super> superCollection=new LinkedList<Super>();
于 2013-10-21T16:50:37.253 に答える