NullPointerException,无法理解为什么

Jou*_*uge -1 java nullpointerexception

我正在尝试进行这个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"));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Exception in thread "main" java.lang.NullPointerException
    at CV.aggiungiPubblicazione(CV.java:18)
    at ProfEvaluator.main(ProfEvaluator.java:53)
Run Code Online (Sandbox Code Playgroud)

我用eclipse进行了调试,没有NullPointers.在标有(*)的行中抛出异常(错误消息指示的行是错误的'因为我只粘贴了我认为与错误有关的程序部分.

Bob*_*der 5

一个空指针.您pubblicazioni在实例化之前尝试访问.

您可以添加到构造函数:

public CV(String nome)
{
    this.nome = nome;
    this.pubblicazioni = new HashSet<>();
}
Run Code Online (Sandbox Code Playgroud)

正如@ZouZou所说:

如果您不处理Java 7,请替换= new HashSet<>();= new HashSet<Pubblicazione>();

  • 如果你不处理Java 7,则替换`= new HashSet <>();`by =`new HashSet <Pubblicazione>();` (2认同)