如何使用特定实体类型来生成工厂?
问题描述:
我该如何基因化方法getBuilder
使他不依赖于Object
,而是依赖于UnitBuilder
或SourceBuilder
的类型?如何使用特定实体类型来生成工厂?
public class BuilderFactory {
Object getBuilder (Object entity) throws UnsupportedResourceEntityType {
if (entity instanceof Source){
return new SourceBuilder();
}
if (entity instanceof Unit){
return new UnitBuilder();
}
throw new UnsupportedResourceEntityType();
}
}
答
为了知道它的类而*提供一个类的实例是没有意义的。你应该通过SourceBuilder.class
或UnitBuilder.class
作为参数,所以你的方法是(我假设你保持一个共同的父茨艾伦两个类,这些类有一个默认的构造函数):
<T extends SuperType> T getBuilder (Class<T> clazz) {
return clazz.newInstance();
}
是否有任何关系'SourceBuilder'和'UnitBuilder'? – Dici 2014-09-21 20:35:56
那你为什么不用这个普通类型来替换Object呢?或者更好,通过这个普通类实现的接口。 – Dici 2014-09-21 20:38:18
是的,但我要删除他们的超类(父类)。 – Alex 2014-09-21 20:38:39