由于有几个版本,IntelliJ具有一个非常有用的功能:当将stream()
语句的各个方法调用放在单独的行上时,IntelliJ会在每行上放置类型信息:
但是当您不直接调用stream()
时(例如从其他方法返回时),该信息将被省略:
是否有一种方法可以说服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很聪明,可以给我类型信息?!
答案 0 :(得分:3)
实际上,有一种启发式方法,使IDEA不会显示此提示。如果单链的不同类型计数少于3,则不会显示它们。当表达式的类型很明显时(例如,构建器),有必要避免向这些提示发送垃圾邮件。
在IntelliJ IDEA 2019.2中,显示提示所需的不同类型计数可以在设置中进行调整(如果将其设置为1,提示将始终显示提示)。
注意:要进行该设置,必须先转到“首选项”->“编辑器”->“镶嵌提示”->“ Java”,然后将“方法提示”的“唯一类型计数”更改为
。