2015-10-05 199 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 ... 

嘗試調試代碼,並與我們分享結果。

相關問題