В следующем фрагменте:Почему допустимо опускать здесь параметр общего типа?
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>
.
Поскольку ваш вход 'Map' имеет конкретный тип' ', поэтому ваши данные также имеют тип' 'Map.Entry –
параметры Тип для владельца компонента ссылок метод часто может быть выведен компилятором для вас, но вы могут свободно размещать их в явном виде. –
Компилятор передает эти вещи для вас. Это его работа. –