2012-02-23 96 views
0

我正在開發一個Feed RSS解析器,並且我堅持我應該從中得到迴應。 我給作爲輸入資訊提供的網址和內容來讀取(例如:標題,描述...),我用來獲取哈希表的ArrayList,其中每個關鍵是一個元素:如何將散列表向下轉換爲抽象類對象

ArrayList<Hashtable<String,String>> 

但我我想做更好的事情。由於我的應用程序中有管理從不同URL(News1,News2,News3類)檢索到的新聞的類,我想返回一個ArrayList,其中每個元素都有一個抽象方法(其實現將根據News1,2或3進行更改)將散列表轉換爲對象的屬性。 我的問題是,我不知道怎麼投每一個字典到從astract類派生的對象......我甚至試圖創造這樣的事情:

public abstract class GenericNews extends Hashtable<String, String> { 
    public abstract News getObject(); 
} 

,但我不能垂頭喪氣了。我怎麼能這樣做? 感謝您的幫助。

+0

你能顯示哪些代碼不起作用嗎?但是,一般來說,您不能接受ArrayList類型的對象並將它們向下投射到新的子類型。你必須首先創建一個新的子類型的對象。 – jmg 2012-02-23 11:23:24

回答

1

你將無法施放它。您將需要創建一個包裝HashTable的GenericNews對象的新實例,並返回它。我不確定在通用新聞中實際擴展Hashtable是明智的 - 爲什麼不讓你的ArrayList爲ArrayList<GenericNews>,並且在GenericNews上有方法來訪問它中的項目,如getNewsItem(String keyword)

+0

你的意思是我不應該讓GenericNews類抽象? – user1012480 2012-02-23 11:39:28

+0

不,我的意思是擴展HashTable是不靈活的。您的通用新聞對象使用哈希表來維護其內部新聞項目,這並不意味着它是一個哈希表。 – mcfinnigan 2012-02-23 11:47:23

+1

好吧,所以我會有這樣的: '公共類GenericNews擴展Hashtable 私人Hashtable字典{0} {0} public String getItem(String item){...} }' – user1012480 2012-02-23 11:48:11