如何为方法返回的流启用“类型信息”?

时间:2019-06-07 06:43:27

标签: java intellij-idea java-8 java-stream

由于有几个版本,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 个答案:

答案 0 :(得分:3)

实际上,有一种启发式方法,使IDEA不会显示此提示。如果单链的不同类型计数少于3,则不会显示它们。当表达式的类型很明显时(例如,构建器),有必要避免向这些提示发送垃圾邮件。

在IntelliJ IDEA 2019.2中,显示提示所需的不同类型计数可以在设置中进行调整(如果将其设置为1,提示将始终显示提示)。

注意:要进行该设置,必须先转到“首选项”->“编辑器”->“镶嵌提示”->“ Java”,然后将“方法提示”的“唯一类型计数”更改为