2014-07-09 60 views
-1

IDE告訴我,創建數組列表時沒有生成任何數據,並且我無法創建抽象類Parser並繼承它,因爲SAXBooksParser已經擴展了DefaultHandler,我該怎麼辦?離開它那樣?如何生成ArrayList

DOMBooksParser domBooksParser = new DOMBooksParser(); 
    SAXBooksParser saxBooksParser = new SAXBooksParser(); 
    StAXBooksParser staxBooksParser = new StAXBooksParser(); 

    ArrayList list = new ArrayList(); 
    list.add(domBooksParser); 
    list.add(saxBooksParser); 
    list.add(staxBooksParser); 
+0

嘗試使用列表<?擴展BaseClass> list ... –

+0

DOMBooksParser','SAXBooksParser'和'StAXBooksParser'是否有共同的基類,比如'BaseParser',和/或接口'Parser'或類似的東西? – EpicPandaForce

回答

2

我無法創建抽象類解析器和繼承它,因爲SAXBooksParser已經擴展了DefaultHandler .Create一個接口。讓所有的類都實現該接口,然後使用

List<MyInterface> list = new ArrayList<MyInterface>(); // code to the interface. Not to the concrete class. 

這將仍然保留,指定你的List應該只包含那些3班的合同。

+0

謝謝!我從來沒有見過這個 – user3505689

+0

@ user3505689 - 歡迎您.. :) – TheLostMind

2
public interface BaseParser {} 

public DOMBooksParser implements BaseParser 
{ 
//code 
} 

public SAXBooksParser implements BaseParser 
{ 
//code 
} 

List<BaseParser> list = new ArrayList<BaseParser>(); //Java 6 
List<BaseParser> list = new ArrayList<>(); //Java 7 

DOMBooksParser domBooksParser = new DOMBooksParser(); 
SAXBooksParser saxBooksParser = new SAXBooksParser(); 

list.add(domBooksParser); 
list.add(saxBooksParser);