如何从对象的ArrayList得到一个对象的属性
问题描述:
我有一些麻烦,试图从其他对象的ArrrayList retrive属性... 这是想法:如何从对象的ArrayList得到一个对象的属性
我有一类客户机上使用一个字符串“name”属性:
Guest guest01 = new Guest("Andrew");
Guest guest02 = new Guset("john");
ArrayList<Guest> list = new ArrayList();
而且我有一个类订房与客人财物的ArrayList:
Booking booking = new Booking(list);
现在我想检索每个名字所以我tryed:
for(Guest guest : booking.getList())
{
System.out.println(guest.getName());
}
也tryed:
Iterator it=booking.getList().iterator();
while(it.hasNext()){
Object objet = it.next();
Guest g = (Guest)objeto;
System.out.println(g.getDNI());
}
在这两种情况下,我得到一个:螺纹 异常 “AWT-EventQueue的-0” 显示java.lang.NullPointerException
预订预订=新的预订();
答
我假设Booking.getList()返回null。您是否在构造函数中使用“this”以将列表分配给字段?
public class Booking {
private List<Guest> list;
public Booking(List<Guest> list) {
this.list = list; // Using of this
}
public List<Guest> getList() {
return list;
}
}
+0
谢谢!我忘了在建设者inicialize! – Peyu
答
我们可以看到Booking类中发生了什么吗? 创建对象的更好方法是,使用验证创建属性。
更糟糕的做法是这样的:
Booking booking = new Booking(list);
良好做法是:
Booking booking = new Booking();
booking.add(list); //in add method you should have validation,like instanceOf ...
尝试调试代码,并与我们分享结果。
你究竟在哪里得到例外?请发布完整的堆栈跟踪。 – Aurasphere
很高兴看到您通过列表的Booking类,确保在booking.getList()返回您传递的内容...(this.list =构造函数中的列表) –
注意:不要使用原始类型。使用'new ArrayList ()' - 注意括号前的'。 – RealSkeptic