有一個現有的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