我一直在尝试根据函数getItem(A context)的输入参数(我称之为上下文)生成一个应该返回公共接口(比如Item)的不同对象的Factory
现在,假设我定义了一种新的上下文:B继承自A.
我想根据传递到工厂的对象是B类还是B类返回不同的项目.
我试着做如下(重载方法):
class Factory { static Item getItem(A context) {...} static Item getItem(B context) {...} }
如果我做这样的事情,这工作正常:
B bContext=new B(); Item it=Factory.getItem(bContext);
但是,如果我将对象转换为对象A:
A bContext=(A) new B(); Item it=Factory.getItem(bContext);
我认为多态性即使在演员之后也能确保第二种方法的执行,我想知道我是否错过了什么?