根据抽象工厂模式,我有以下 2 个接口:
public interface GenericObjectInterface<T extends Number>{
public T getResult();
}
public interface AbstractFactoryInterface{
public <T extends Number> GenericObjectInterface<T> createGenericObject();
}
我有一个实现 GenericObject 的抽象类,但它仍然不知道具体类型(它只对 Number 进行泛型操作):
public abstract class GenericAbstractClass<T extends Number> implements GenericObjectInterface<T>{ }
然后我有一系列执行通用参数替换的具体类扩展:
public class IntegerObject extends GenericAbstractClass<Integer>{
public Integer getResult(){}
}
....
现在,我从工厂的实现内部构建了具体类型,它正在实现 GenericObjectInterface 但丢失了它的泛型参数:
public class ConcreteFactory{
public <T extends Number> GenericObjectInterface<T> greateGenericObject(Class<T> c){
if (c.class.isInstance(Integer.class)){
IntegerObject obj = new IntegerObject();
//I would like to return obj
GenericObjectInterface<T> a = new IntegerObject(); //errror
GenericAbstractClass<T> a = new IntegerObject(); //errror
return a;
}else if (c.class.isInstance(Double.class)){
}
}
}
我想返回实现 GenericObjectInterface 的 obj 但我不知道该怎么做。我该如何解决这个问题?
我习惯于抽象工厂,但我从未将它与泛型一起使用。我在解释模式时是否犯了一些错误?