2015-04-15 18 views
-1

我一直在想這個1hr30現在,它太混亂了,看起來像一個非常簡單的問題,所以我來這裏問。在Java對象中訪問一個列表

我向第三方API發送獲取請求,以獲取動畫(電影)細節爲xml。 我將它們存儲在一個Ann.java類中,該類由netbean的來自示例xml響應的JAXB xml綁定自動生成。

我原來使用的XML文件只返回了一個動畫項,以便我可以使用

String output = gt.fetchMovie().getAnime().getName(); 

其中GT是我的web服務。這會將動畫的名稱打印到我的IDE中。

我改變了設置,以便第三方API響應給我多個動畫結果,而不僅僅是一個。我現在搜索「福音傳教士」並獲得3個結果。

但是,xml和java類的新模式意味着屬性存儲爲列表。例如。如果我想獲得一個動畫的的getName正是這種結構中:

public class Ann { 

protected List<Object> animeOrManga; 

public List<Object> getAnimeOrManga() { 
     if (animeOrManga == null) { 
      animeOrManga = new ArrayList<Object>(); 
     } 
     return this.animeOrManga; 
    } 

public String getName() { 
      return name; 
     } 

我一直在試圖找出如何返回的getName但無法找到任何解釋什麼,我想做的事情。我不夠聰明只是「弄明白這一點」,並且已經進行了1小時30分的反覆試驗。

我知道我想做這樣的事情,但猜測語法是不可能的,一切都變成了紅色,或者找不到符號,或者其他什麼。

List<Object> = gt.fetchMovie().getAnimeOrManga(); 
For each (list object) 
getName(); 

感謝您的閱讀!

+0

如果我不確定如何做一些簡單的事情,比如在一種語言中進行迭代,我的第一反應就是找到關於該語言的教程或書籍,而不是在論壇上提出問題。 – vanza

+0

更新:我已經向我解釋過,我的自動生成的Ann類需要手動修改,然後才能正確使用它。 (對象項目:anime orranga){if(item of instanceof Anime){動畫a =(Anime)item; System.out.println(a。的getName()); (漫畫)項目;其他(日本漫畫的項目實例){ } elseif(漫畫項目實例){ Manga m = System.out.println(m.getName()); } }'code'我打算看看自己定製的xml解析,只需要以更簡單的方式處理我需要的數據 – user3474126

回答

0

如何創建具有name屬性一樣

public class Animal { 
private String name; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

}

那麼你就可以

List<Animal> animeOrManga = gt.fetchMovie().getAnimeOrManga(); 

使用,那麼你可以在每次使用一個類。

+0

所有東西都存儲在Ann.java類中,所以我應該可以從那裏直接訪問它,如果我能弄清楚語法...我仍在嘗試,但建議沒有:) – user3474126

+0

我想你應該讓你的安更改保護列表 animeOrManga到列表 animeOrManga並刪除ann –

+0

中的getName()函數我不明白你所建議的任何內容的含義,但一些其他人提到它和我開始明白。這可能是正確的答案,但我走了一條不同的路線,而不是使用4000行自動生成的Ann類,我做了一個自定義的XML解析器,將我想要的數據放入一個簡單的自定義Ann類中,該類更容易使用。謝謝大家。 – user3474126

0

您提供的pseudocodish可以用Java編寫如下:

List<Ann> list = new ArrayList<Ann> // You want the list as specific as possible 
list.clone(gt.getAnimeOrManga()); 
for(Ann listObject : list) {  // For each loop 
    listObject.getName(); 
} 

使用什麼是for-each循環,這到底是什麼聲音:在這個列表中的每個事情做到這一點。

clone()方法獲取一個ArrayList並將其複製到新的列表中。 在這裏看到:How do I copy the contents of one ArrayList into another?

+0

感謝您的回覆。在我看來,克隆已經存在的數據是不正確的。我只想從它保存到的類中訪問它。我張貼了另一個問題的描述(用截圖!),希望更簡化,如果你在http://www.teamliquid.net/forum/general/134491-the-big-programming-thread?page=613#12248小心再看一眼。非常感謝你試着:) – user3474126