有一个现有的Set<Trump>
传递给另一个函数,它将Set<? extends Politician>
作为参数。鉴于Set<? extends Politician>
将包含Politician
对象或仅包含Trump
对象。从<?扩展动物>
该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 ..是的..要做到没有反射或instanceof ..它可以重新设计派生类或参数的功能.. – user46743