2013-05-01 79 views
-1

我试图让这个Java的运动,但我得到一个NullPointerException,我不明白为什么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。 在标有(*)的行中抛出异常(由错误消息指示的行是错误的,因为我只粘贴了我认为与错误有关的程序的某些部分)

回答

2

你需要使用它之前初始化pubblicazioni

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

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

您可以添加到构造函数:。

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

由于@ZouZou说:

如果你不打算用Java 7,用= new HashSet<Pubblicazione>();替换= new HashSet<>();

+2

如果你不处理与Java 7,更换'=新的HashSet <>();通过''=新的HashSet () ;' – 2013-05-01 14:04:31

2

在向它添加值之前初始化你的HashSet pubblicazioni

相关问题