簡體   English   中英

為什么在這里省略泛型類型參數是可以接受的?

[英]Why is it acceptable to omit the generic type parameter here?

在以下代碼段中:

public class IDMapBase<T> extends HashMap<DeviceID, T> {
    public Map<DeviceID, T> filterMap(Set<DeviceID> neededIDs) {
        return entrySet().stream()
            .filter(e -> neededIDs.contains(e.getKey()))
            .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
    }
}

為什么只說Entry::getXX而不是Entry<DeviceID, T>>::getXX 我認為(Map.)Entry將默認為Entry<Object, Object> ,這不能用作Map<DeviceID, T>的條目。

您的輸入參數具有足夠的類型信息,供編譯器推斷所有中間通用類型。

它可以說明“什么進來”和“什么進來” ...以及“中間的步驟”匹配。

示例:第一個調用是entrySet() 因此周圍的類可能是具有定義的K,V的Map。因此,編譯器知道它正在處理某些EntrySet<K,V> ...可能與在neededIDs找到的通用類型匹配。

依此類推...如果您有興趣自己“推斷”類型,則可以; 我建議您首先分解那些流利的鏈接方法調用。 逐一; 弄清楚它們返回什么,以及您可以了解每個操作的結果類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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