【发布时间】:2015-01-22 18:33:50
【问题描述】:
这是一个简单的 Java 8 lambda 示例。
public class Main {
public static void main(String[] args){
String outerScope = "outer";
Runnable runnable = new Runnable() {
@Override
public void run() {
String runnableInner = "runnable inner";
System.out.println("inside runnable: " + outerScope);
Void avoid = null; //Breakpoint
}
};
Runnable lambda = () -> {
String lambdaInner = "lambda inner";
System.out.println("inside lambda: " + outerScope);
Void avoid = null; //Breakpoint
};
runnable.run();
lambda.run();
}
}
在 runnable 范围内,可以使用 IntelliJ 的“评估表达式”工具来评估 outerScope 的定义。
但是,在lambda 范围内,outerScope 是未定义的。
两个打印语句都正确打印了outerscope 的值。
有没有办法解决这个问题?
【问题讨论】:
-
看看这个错误报告:youtrack.jetbrains.com/issue/IDEA-126257#u=1407007602744。显然这是由一些JDK错误引起的(假设它与您描述的情况相同,似乎是这样)
标签: java intellij-idea lambda java-8