Существует существующий Set<Trump>
, который передается другой функции, которая принимает в качестве аргумента Set<? extends Politician>
. Учитывая, что Set<? extends Politician>
будет содержать либо объект Politician
, либо объект Trump
.Получение подтипа из <? extends Animal>
Politican
Класс не может быть изменен. Класс Trump
доступен для модификации.
Есть ли способ сделать это следующим образом или как должен быть преобразован производный класс (Trump
), чтобы иметь возможность сделать это?
public Set<Trump> getSetOfTrump(Set<? extends Politician> politicianSet)
{
//do some processing
for(Politician pol : politicianSet){ //compiler is ok.. but I dont need Politician Object here
}
for(Trump t : politicianSet){ // any way to get Trump Objects out of politicianSet?
}
}
без использования 'instanceof' или отражения? – bradimus
Использование 'instanceof' может быть доказательством запаха кода .. но ... если у вас нет доступа к коду для супертипа, то он может быть лучшим, самым быстрым и дешевым вариантом для работы с экземплярами подтипа известного тип. – scottb
@bradimus .. да .. Для этого без отражения или экземпляра .. его нормально переделать производный класс или аргумент для функции. – user46743