будет называться.

ался сгенерировать Фабрику, которая должна возвращать другой объект общего интерфейса (скажем,Item) в соответствии с входным параметром (я называю это контекстом) функцииgetItem(A context)

Теперь предположим, что я определил новый тип контекста: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);

первый фабричный метод называется.

Я думал, что полиморфизм обеспечит выполнение второго метода даже после приведения, и я хотел бы знать, если я что-то пропустил?

Я знаю, что я мог бы продолжать иметь единственный метод и использоватьis оператор, чтобы проверить, что тип переменной, но я думал, что решение, которое я представил выше, было немного более элегантным.

Ответы на вопрос(2)

Ваш ответ на вопрос