Я читаю «Эффективную Java 3» и заметил этот код в статье 43: «Предпочитайте ссылки на методы вместо лямбда-выражений»:
TreeMap<K,V>::new
Обратите внимание на параметры типа. Я всегда просто делал:
TreeMap::new
Я использую Intellij и никогда не получал предупреждений об этом или каких-либо рекомендаций по его изменению. На самом деле, когда IDE изменяет указанную выше ссылку на метод на лямбду, она преобразует ее в
() -> new TreeMap<Integer, Integer>()
Какова ценность включения параметров типа? Разве компилятор не может вывести это на основе параметров типа переменной? Судя по тому, как среда IDE преобразовала ссылку на метод в лямбда-выражение, кажется, что это возможно.