Mar*_*rno 6 intellij-idea intellij-14
我注意到当我将鼠标悬停在局部变量上时,当我的调试器在lambda内停止时,Cannot find local variable 'variable_name'即使它在lambda中可见并且已经使用,它也会报告.
示例代码
public class Main {
public static void main(String[] args) {
String a = "hello_world";
m1(a);
}
private static void m1(String a) {
AccessController.doPrivileged((PrivilegedAction<String>) () -> {
System.out.println("blala " + a);
return "abc";
});
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用System.out.println("blala " + a);和之后的断点,return "abc"它总是报告相同的错误.

我使用的AccessController.doPrivileged是因为它是我在原始代码中使用的,当然我使用的是Java 8.
它在Watchers和中说同样的事情Evaluate Expression.
我尝试使用"匿名类"版本,调试器a正确看到了值

private static void m1(String a) {
AccessController.doPrivileged(new PrivilegedAction<String>() {
@Override
public String run() {
System.out.println("blala " + a);
return "abc";
}
});
}
Run Code Online (Sandbox Code Playgroud)
我遗漏了一些关于lambda表达式的内容,或者它是一个IntellIJ IDEA 14错误?
我现在不想报告错误,因为我已经报告了由我的代码而不是IntellIJ IDEA引起的错误,所以我想在做某事之前确定(因为我不经常使用Java 8,所以我可能是错的).
| 归档时间: |
|
| 查看次数: |
9415 次 |
| 最近记录: |