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

2022-09-04 22:40:16

从几个版本开始,IntelliJ有一个非常有用的功能:当您将语句的各个方法调用放在单独的行上时,IntelliJ将类型信息放在每行上:stream()

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

实际上,有一个启发式的,这使得IDEA没有显示这个提示。如果单个链的不同类型的计数小于 3,则不会显示它们。当表达式的类型很明显(例如,构建者)时,需要避免发送此提示。

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

注意:要获得该设置,必须转到首选项 ->编辑器 -> Inlay Hints -> Java,并更改“方法提示”的“唯一类型计数”。


答案 2

推荐