有一个现有的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?
}
}
最佳答案
您必须手动过滤对象:
for(Politician t : politicianSet){ // any way to get Trump Objects out of politicianSet?
if(t instanceof Trump) {
//do your magic here
}
}
如果
instanceof
是Trump(的一个子类)的实例,则t
运算符返回true。