2012-11-03 30 views
0

我想知道为什么我有这个错误。你有没有想法,你知道如何解决它?Java - java.lang.NullPointerException(把数据放入List <>)

错误(我得到这个错误的put()):

Exception in thread "main" java.lang.NullPointerException 
at nacs.put(nacs.put:36) 
at Program.main(Program.java:69) 

纲领:(主)

Nac nacs = new Nac(); 
nacs.put(new Intsult(1)); 
nacs.put(new Intsult(2)); 

类:

public class Nac implement IPoraw 
{ 
public List<IAbstrsUlt> abs; 
public void put(IAbstrsUlt value) 
{ 
abs.add(value); 
} 
} 

回答

10

初始化列表。

private List<IAbstrsUlt> abs = new ArrayList<IAbstrsUlt>(); 

注意:您应该始终尝试声明您的成员更具限制性。 Object的默认值为null。请参阅Oracle tutorial以了解默认值。

+0

“初始化列表”是真正的答案。 “使用私有而不公开”是一般的好建议,但与“例外”无关。我觉得你应该将两者分开,而不是将两者都作为解决问题的一部分。 – Jasper

2

变量abs永远不会被初始化。

试试这个

public List<IAbstrsUlt> abs = new ArrayList<>(); 
1
public List<IAbstrsUlt> abs; 

-在你只需宣布List Reference Variable命名IAbstrsUlt类型的abs上述声明,并为Object Reference Variable默认值null,所以在这种情况下也是如此。

-你必须初始化它。

public List<IAbstrsUlt> abs = new List<IAbstrsUlt>();

相关问题