IDE告诉我创建没有泛化的数组列表并不是那么好,我无法创建抽象类Parser并从中继承,因为SAXBooksParser已经扩展了DefaultHandler,我该怎么办?这样离开吗?
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 :(得分:2)
我无法创建抽象类Parser并从中继承,因为SAXBooksParser已经扩展了DefaultHandler 。创建一个接口。让所有类实现该接口,然后使用
List<MyInterface> list = new ArrayList<MyInterface>(); // code to the interface. Not to the concrete class.
这仍将保留合同,该合同指定您的List
应仅包含这3个类。
答案 1 :(得分: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);