我在添加到ArrayList时遇到问题。 在我的主要方法中,我有:
public static void main(String[] args)
{
ArrayList<Bin> warehouse = new ArrayList<Bin>();
Bin a = new Bin( "A" );
Bin b = new Bin( "B" );
warehouse.add( a );
warehouse.add( b );
a.add( new BinItem( "1234-0", 500 ) );
a.add( new BinItem( "1234-1", 25 ) );
a.add( new BinItem( "1234-2", 7720 ) );
b.add( new BinItem( "1234-3", 1000 ) );
for ( Bin bn : warehouse )
System.out.println( bn );
}
在bin类中有:
private String myName;
private ArrayList<BinItem> myContents;
public Bin( String name )
{
myName = name;
}
public String getName()
{
return myName;
}
public ArrayList<BinItem> getContents()
{
return myContents;
}
public void add( BinItem b )
{
myContents.add(b); //This is where I'm getting the error.
}
public String toString()
{
String s = "Bin " + myName + ":\n";
for ( BinItem b : myContents )
s += b + "\n";
return s;
}
它编译得很好,但每当我运行它时,它会说“java.lang.NullPointerException “在标记的线上。这可能是愚蠢的,但任何人都可以帮助我吗?非常感谢。
答案 0 :(得分:2)
您似乎没有在任何地方初始化myContents
myContents = new ArrayList<BinItem>();
答案 1 :(得分:2)
查看您的代码,似乎您永远不会初始化myContents
:
private ArrayList<BinItem> myContents;
你应该总是初始化它:
private ArrayList<BinItem> myContents = new ArrayList<BinItem>();
确定的最佳方法是设置断点并运行调试器。调试是一项非常非常有用的技能(在Eclipse中很容易启动)。
似乎myContents
为空,而不是b
。
答案 2 :(得分:1)
您收到错误是因为在toString()
方法中,您正在尝试遍历myContents
ArrayList,该列表从未针对您的大多数项目进行过初始化。