Как включить «информацию о типе» для потоков, возвращаемых из методов? - PullRequest
8 голосов
/ 07 июня 2019

Начиная с нескольких версий, IntelliJ имеет очень полезную функцию: когда вы помещаете отдельные вызовы метода оператора stream() в отдельные строки, IntelliJ помещает информацию о типе в каждую строку:

with type information

Но когда вы не вызываете stream() напрямую, например, когда он возвращается из другого метода, эта информация пропускается:

without types

Есть ли способ убедить IntelliJ показывать такую ​​информацию о типах и для таких ситуаций?

В виде чистого текста с вставленными вручную комментариями, чтобы «показать» проблему с чистым текстом:

public Stream<Entry<String, String>> withTypeInformation() {
    return generateMap() // Map<String, String>
            .entrySet()  // Set<Entry<String, String>>
            .stream()    // Stream<Set<Entry<String, String>>>
            .filter(e -> !e.getKey().equals("foo")) // Stream<Set<Entry<String, String>>>
            .filter(e -> !e.getKey().equals("bar")) // Stream<Set<Entry<String, String>>>
            .filter(e -> !e.getKey().equals("now"));
}

public Stream<Entry<String, String>> withoutTypeInformation() {
    return withTypeInformation() // no such info 
            .filter(e -> !e.getKey().equals("foo")) // not here either
            .filter(e -> !e.getKey().equals("bar")) // guess what, nothing, too
            .filter(e -> !e.getKey().equals("now"));
}

И обратите внимание: первый метод использует метод генератора, который возвращает экземпляр карты.Там IntelliJ достаточно умен, чтобы дать мне информацию о типе?!

1 Ответ

3 голосов
/ 10 июня 2019

На самом деле, существует эвристика, которая заставляет IDEA не показывать эти подсказки.Если количество разных типов в одной цепочке меньше 3, они не будут показаны.Необходимо избегать рассылки спама по этим подсказкам, когда тип выражения очевиден (например, составители).

В IntelliJ IDEA 2019.2 количество различных типов, необходимых для отображения подсказок, можно настроить в настройках (если оно установлено на1, подсказки будут всегда отображаться).

Примечание: чтобы перейти к этому параметру, нужно обратиться к «Предпочтениям» -> «Редактор» -> «Советы по вставке» -> Java и изменить «счетчик уникальных типов» для «Метод».намеки».

...