我正在写两个类来处理简单的拍卖。我有一个类准备工作和,它处理的操作单个拍卖,现在我正在写像一个拍卖行的另一个类,跟踪所有可用的拍卖。当测试类的以下部分:

import java.util.ArrayList;

public class AuctionHouse {
    private ArrayList<DutchAuction> huutokaupat;

    public AuctionHouse() {
    }

    public void addAuction(DutchAuction newAuction) {
        huutokaupat.add(newAuction);
    }
}

用下面的代码的主方法内(“kauppa”是测试和工作对象的变量):

AuctionHouse talo = new AuctionHouse();
talo.addAuction(kauppa);

我得到:

  

异常在线程“主”显示java.lang.NullPointerException     在ope.auction.dutch.AuctionHouse.addAuction(AuctionHouse.java:13)     在ope.auction.dutch.DutchAuctionTest.main(DutchAuctionTest.java:54)

我怎样才能解决这个问题呢?

有帮助吗?

解决方案

您从来没有实际创建的ArrayList。你需要

private ArrayList huutokaupat = new ArrayList();

其他提示

每个人都提到创建列表的Java 1.4的方式。在Java 5及以上,实例化一个采集适当的方式将包括一般类型,以及:

ArrayList<DutchAuction> huutokaupat = new ArrayList<DutchAuction>();

此外,除非你需要使用的功能具体到一个ArrayList,这是更好地定义huutokaupat使用接口,而不是执行。例如:

List<DutchAuction> huutokaupat = new ArrayList<DutchAuction>();

如果您只需要使用List接口的方法,甚至

Collection<DutchAuction> huutokaupat = new ArrayList<DutchAuction>();

如果你只需要收集方法。使用像列表或收藏的接口定义变量类型,能够切换在将来其他东西的实现(ArrayList中),并使该开关对你的代码的影响很小。

当您要添加到它不初始化您的数组列表。初始化它在你的构造函数,或更好,但在球场上:

private ArrayList huutokaupat = new ArrayList();

huutokaupat没有被初始化

添加到构造:

public AuctionHouse() {
     huutokaupat = new ArrayList();
}

这将创建从huutokaupat变量引用的ArrayList对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top