Давайте предположим, у меня есть такие классы:
ParentA, ChildA1, ChildA2 ... ChildAn
ParentB, ChildB1, ChildB2 ... ChildBn
Дублирование кода против литья типа vs?
Таким образом, каждый класс ChildAi расширяет ParentA, и каждый класс ChildBi расширяет ParentB класс.
В классе ChildAi Мне нужно работать с классом ChildBi. Например:
public class ChildAi extends ParentA{
public ChildBi getChildB(...){
....some logic....
return childBi;
}
}
Таким образом, проблема заключается в методе getChildB. Если я поставлю этот метод в ParentA, я могу вернуть только класс ParentB, и мне всегда придется делать кастинг. Если я положу этот метод в ChildAi, я всегда буду дублировать этот метод и, по крайней мере, немного его логику. Как я могу это решить? Можно ли решить такую проблему без дженериков?
Возможно, [generics] (http://docs.oracle.com/javase/tutorial/java/generics/) может вам помочь. – Maroun
Что заставляет вас не использовать дженерики? –
Ну, вы сами определили несколько решений: явное литье или «дублированный» код. Обратите внимание, что generics в Java основаны на неявной кастинге в любом случае. –