2015-10-05 94 views
0

我有一些麻烦,试图从其他对象的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

预订预订=新的预订();

+1

你究竟在哪里得到例外?请发布完整的堆栈跟踪。 – Aurasphere

+0

很高兴看到您通过列表的Booking类,确保在booking.getList()返回您传递的内容...(this.list =构造函数中的列表) –

+0

注意:不要使用原始类型。使用'new ArrayList <>()' - 注意括号前的<>'。 – RealSkeptic

回答

0

我假设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

0

我们可以看到Booking类中发生了什么吗? 创建对象的更好方法是,使用验证创建属性。

更糟糕的做法是这样的:

Booking booking = new Booking(list); 

良好做法是:

Booking booking = new Booking(); 

booking.add(list); //in add method you should have validation,like instanceOf ... 

尝试调试代码,并与我们分享结果。

相关问题