-1

この Java 演習を作成しようとしていますが、NullPointerException を受け取り、その理由がわかりません

public class CV 
{
    private String nome;
    private HashSet<Pubblicazione> pubblicazioni;

    public CV(String nome)
    {
        this.nome = nome;
    }

    public void aggiungiPubblicazione(Pubblicazione pub)
    {
        pubblicazioni.add(pub);(*)
    }

    public String getNome(){return nome;}
    public HashSet<Pubblicazione> getPubblicazioni(){ return pubblicazioni; }
}



public class ProfEvaluator
{
    private CV curriculum;
    public ProfEvaluator(CV curriculum){ this.curriculum = curriculum; }

    public static void main(String[] args)
    {
        CV cv = new CV("Mario Rossi");
        cv.aggiungiPubblicazione(new Pubblicazione("pub1",10, "Mario Rossi",   "Luigi Bianchi", "Giuseppe Verdi")); (*)
        cv.aggiungiPubblicazione(new Pubblicazione("pub2",10, "Mario Rossi", "Giuseppe Verdi"));
    }
}

出力は次のとおりです。

Exception in thread "main" java.lang.NullPointerException
    at CV.aggiungiPubblicazione(CV.java:18)
    at ProfEvaluator.main(ProfEvaluator.java:53)

Eclipse でデバッグを行いましたが、NullPointers はありません。(*) でマークされた行で例外がスローされます (エラー メッセージで示される行は間違っています。

4

3 に答える 3

5

あなたはヌルポインタを持っています。pubblicazioniインスタンス化する前にアクセスしようとします。

コンストラクターに追加できます。

public CV(String nome)
{
    this.nome = nome;
    this.pubblicazioni = new HashSet<>();
}

@ZouZouが述べたように:

Java 7 を扱っていない場合は= new HashSet<>();= new HashSet<Pubblicazione>();

于 2013-05-01T14:01:45.487 に答える
2

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

public CV(String nome)
{
    this.nome = nome;
    this.pubblicazioni = new HashSet<Pubblicazione>();
}
于 2013-05-01T14:03:07.680 に答える
2

pubblicazioni値を追加する前にHashSet を初期化します。

于 2013-05-01T14:02:39.957 に答える