2014-07-09 17 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);