[英]Generics : List<? extends Animal> is same as List<Animal>?
[英]retrieving sub type from a <? extends Animal>
有一個現有的Set<Trump>
傳遞給另一個接受Set<? extends Politician>
Set<? extends Politician>
為參數。 給定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
}
}
如果t
是Trump(的一個子類)的實例,則instanceof
運算符返回true。
下面的代碼可以工作-
public Set<Trump> getSetOfTrump(Set<? extends Politician> politicians){
return politicians.stream().filter( s -> s instanceof Trump).map(s ->(Trump)s).collect(Collectors.toSet());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.