1
我试图使用泛型实现Strategy + Factory模式。我们的目标是返回一个客户端类的接口DocumentDao的实现,它可以处理类型T extends Document,所以我有多个Dao接口为DocumentDao的不同子类型扩展DocumentDao。Java - 带泛型的工厂和战略模式
这里是我的代码:
public class Document { ... }
public class DocumentA extends Document { ... }
public class DocumentB extends Document { ... }
public interface DocumentDao<T extends Document> {
public void update(T document);
}
public interface DocumentADao<DocumentA> {}
public interface DocumentDaoFactory {
public <T extends Document> DocumentDao<T> getDaoInstance(Class<T> clazz);
}
然后我尝试使用工厂:
private <T extends Document> void someMethod(T document) {
...
DocumentDao<T> documentDao = this.documentDaoFactory.getDaoInstance(document.getClass());
documentDao.update(document);
...
}
但有关getDaoInstance()调用编译器的抱怨:
Type mismatch: cannot convert from DocumentDao<? extends AbstractGDriveDocument<?>> to DocumentDao<T>
如何处理这种情况? 我如何获得类似的解决方案?
由于
对不起,第一个错误,这只是一个疏忽(在我的真实代码中是正确的),所以我会更新这个问题。 第二点解决了我的问题,非常感谢。 – user1781028