Я пытался создать фабрику, предполагаемую, чтобы вернуть другой объект общего интерфейса (скажем, элемент
) в соответствии с входным параметром (я называю его контекстом) функции GetITem (A Контекст)
Теперь предположим, что я определяю новый тип контекста: B
, который наследует из A
.
Я хотел вернуть другой предмет в зависимости от того, был ли объект на заводе был классом B
или A
.
Я пытался сделать следующим образом (перегрузка метода):
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);
Первый фабричный метод называется.
Я думал, что полиморфизм обеспечит выполнение второго метода даже после литого вещества, и я хотел бы знать, если я что-то пропустил?
Я знаю, что я могу сохранить один метод и использовать - это оператор
, чтобы проверить, какой тип переменной является, но я думал, что решение, которое я представил выше, было немного более элегантным.