如何使方法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();
}
}
答案 0 :(得分:0)
被迫提供类的实例只是为了知道它的类是没有意义的。您应该将SourceBuilder.class
或UnitBuilder.class
作为参数传递,因此您的方法将是(我假设您为两个类保留了一个共同的超类型,并且这些类具有默认构造函数):< / p>
<T extends SuperType> T getBuilder (Class<T> clazz) {
return clazz.newInstance();
}