IntelliJ - 粉色下划线的变量...这是什么意思?

11

请问可以解释一下,为什么第108行的列表变量有特定的颜色并带有下划线吗?

输入图像描述

如果我将相同的代码放在for-each而不是foreach()中,则看起来就是“正常的”。

提前感谢您!


请记住,lambda本质上是语法糖,用于实现功能接口的匿名类。 - Mark Rotteveel
3个回答

12

首先,您正在使用语法糖lambda。其次,在第二个示例中,如果一个变量不是来自lambda内部,则会出现紫色下划线,以向用户显示您未使用本地变量。

例如:

public static void main(String[] args) {
    int a = 0;
    Consumer<String> stringConsumer = foo -> {
      foo += a;
    };

    for (int i = 0; i < 1; i++) {
        String s = " " + a;
    }
}
如果你粘贴这段代码,你会发现只有 foo += a 中的 a 被标记为紫色下划线,因为它来自于 lambda 外部。

1

这只是使用语义高亮标记entryDTS不是一个本地变量


(来源: cloudfront.net)

语义高亮,之前在KDevelop和其他一些IDE中引入,现在在IntelliJ IDEA中可用。它通过为每个参数和本地变量提供独特的颜色来扩展标准语法突出显示。


0
下划线参数表示在lambda表达式内部使用外部声明的局部变量。 要禁用它,请转到:编辑器->颜色方案->Java->参数->禁用“隐式匿名类参数” 输入图像描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接