我有一个包含两个arraylists的类,我正在尝试将对象存储到每个对象类型中。在我的主类中,我正在插入这样的对象:
for (int i =0; i < 3; i++)
{
Cat cat = new Cat("meow",i);
Dog dog = new Dog("woof",i);
objList.addCat(cat);
objList.addDog(dog);
}
我的ObjectList(objList)类设置如下:
import java.util.ArrayList;
public class ObjectList {
public ArrayList cats;
public ArrayList dogs;
public ObjectList()
{
this.cats = new ArrayList();
this.dogs = new ArrayList();
}
public void addCat(Cat c)
{
this.cats.add(c);
}
public void addDog(Dog d)
{
this.dogs.add(d);
}
}
但我从java.lang.NullPointerException
行开始objList.addCat(cat);
。我在此行之前打印出了cat对象属性,并且似乎都设置了两个值。我试着看看我是否可以将一个int传递给我的addCat arrayList,但是我得到了同样的错误,所以我假设我在我的类中错误地使用了arraylist。我的代码中是否有错误显而易见?
答案 0 :(得分:6)
我建议的一些事情:
所以试试这个:
public class ObjectList {
private final List cats;
private final List dogs;
public ObjectList() {
cats = new ArrayList();
dogs = new ArrayList();
}
public void addCat(Cat c) {
cats.add(c);
}
public void addDog(Dog d) {
dogs.add(d);
}
}
这应该避免可能发生的任何外部变化。或者,更好的是,使用泛型:
public class ObjectList {
private final List<Cat> cats;
private final List<Dog> dogs;
public ObjectList() {
cats = new ArrayList<Cat>();
dogs = new ArrayList<Dog>();
}
public void addCat(Cat c) {
cats.add(c);
}
public void addDog(Dog d) {
dogs.add(d);
}
}
您正在初始化对象列表实例吗?
ObjectList objList = new ObjectList();
for (int i=0; i<3; i++) {
Cat cat = new Cat("meow",i);
Dog dog = new Dog("woof",i);
objList.addCat(cat);
objList.addDog(dog);
}
答案 1 :(得分:3)
在使用之前是否初始化了objList?
ObjectList objList = new ObjectList();
(在做循环之前)