簡體   English   中英

從一個子類型中檢索<? extends 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM