源自add()方法的运行时错误(尝试覆盖时)

alx*_*mke 0 java methods overriding class arraylist

所有这些类都编译得很好,但是当我尝试运行我的测试器类时,它会返回以下错误:

显示java.lang.NullPointerException:

空值

显示java.lang.NullPointerException

在Bin.add(Bin.java:23)

在BinTest.main(BinTest.java:11)

以下是课程:

public class BinItem
{
    private String mySKU;
    private int myQuantity;

    public BinItem( String sku, int quantity )
    {
        mySKU = sku;
        myQuantity = quantity;
    }

    public String getSKU()
    {
        return mySKU;
    }

    public int getQuantity()
    {
        return myQuantity;
    }

    public String toString()
    {
        // Write code here to return a string using
        // the format: “SKU <sku>: <quantity>”. For
        // example: “SKU 12345-15: 4320”.
        return "SKU <" + getSKU() + ">: <" + getQuantity() + ">";
    }
}

import java.util.*;
public class 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);
    }

    public String toString()
    {
        String s = "Bin " + myName + ":\n";
        for ( BinItem b : myContents )
        {
            s += b + "\n";
        }
        return s;
    }
} 

import java.util.*;
public class BinTest
{
    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 );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Kee*_*san 5

您尚未初始化myContentsArrayList.您必须在使用之前对其进行初始化

private ArrayList<BinItem> myContents = new ArrayList<BinItem>();
Run Code Online (Sandbox Code Playgroud)