有一个现有的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。

10-08 07:41