簡體   English   中英

NullPointerException,不明白為什么

[英]NullPointerException, can't understand why

我正在嘗試進行此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。 在標有(*)的行中引發異常(錯誤消息指示的行是錯誤的,因為我僅粘貼了我認為與錯誤有關的程序部分。

確實有一個空指針。 您嘗試在實例化之前訪問pubblicazioni

您可以添加到構造函數中:

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

正如@ZouZou所說:

如果您不使用Java 7,請替換= new HashSet<>(); = new HashSet<Pubblicazione>();

在向其添加值之前初始化HashSet pubblicazioni

您需要在使用之前初始化pubblicazioni

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM