Java的NullPointerException异常
-
21-09-2019 - |
题
我正在写两个类来处理简单的拍卖。我有一个类准备工作和,它处理的操作单个拍卖,现在我正在写像一个拍卖行的另一个类,跟踪所有可用的拍卖。当测试类的以下部分:
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对象。
不隶属于 StackOverflow