为什么我得到这个空错误?我正在尝试添加到ArrayList

时间:2013-04-09 02:17:46

标签: java arraylist

我在添加到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 “在标记的线上。这可能是愚蠢的,但任何人都可以帮助我吗?非常感谢。

3 个答案:

答案 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,该列表从未针对您的大多数项目进行过初始化。