Почему имя класса / объекта должно быть явно указано для ссылок на методы?

Когда я хочу обратиться к методу в текущей области, мне все еще нужно указать имя класса (для статических методов) илиthis до:: оператор. Например, мне нужно написать:

import java.util.stream.Stream;

public class StreamTest {
    public static int trimmedLength(String s) {
        return s.trim().length();
    }

    public static void main(String[] args) {
        System.out.println(Stream.of("  aaa  ", "  bb ", " c ")
                .mapToInt(StreamTest::trimmedLength).sum());
    }
}

Это не такая большая проблема дляthis, но иногда выглядят переполненными для статических методов, так как имя класса может быть довольно длинным. Было бы хорошо, если бы компилятор позволял мне писать просто::trimmedLength вместо:

public static void main(String[] args) {
    System.out.println(Stream.of("  aaa  ", "  bb ", " c ")
            .mapToInt(::trimmedLength).sum());
}

Однако компилятор Java-8 не позволяет этого. Для меня кажется, что было бы вполне логичным, если бы имя класса / объекта было разрешено таким же образом, как это делается для обычного вызова метода. Это также поддержит статический импорт ссылок на методы, что также может быть полезно в некоторых случаях.

Таким образом, вопрос в том, почему такой или подобный синтаксис не был реализован в Java 8? Есть ли проблемы с таким синтаксисом? Или это просто не обсуждалось?

Ответы на вопрос(1)

Ваш ответ на вопрос