0

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

4

3 回答 3

2

您似乎没有在任何地方初始化 myContents

 myContents = new ArrayList<BinItem>();
于 2013-04-09T02:19:43.723 回答
2

查看您的代码,您似乎从未初始化myContents

private ArrayList<BinItem> myContents;

你真的应该总是初始化它:

private ArrayList<BinItem> myContents = new ArrayList<BinItem>();

确定的最好方法是设置断点并运行调试器。调试是一项非常非常有用的技能(在 Eclipse 中非常容易启动)。

似乎myContents是 null,而不是b.

于 2013-04-09T02:19:49.573 回答
1

您收到错误是因为在该toString()方法中,您尝试遍历myContentsArrayList,而该 ArrayList 从未为您的大多数项目初始化。

于 2013-04-09T02:19:16.830 回答