我在Netbeans 8.2中遇到了一个奇怪的错误。
当声明一个带有lambda表达式的对象时,lambda中变量的自动完成似乎不起作用,而是我看到了全局变量,关键字的建议以及截图中显示的其他内容。
如您所见,testString
和testString2
无处可见。
我尝试过其他对象,结果总是一样。
现在,如果我们对匿名内部类做同样的事情,我们可以看到我们的变量testString
和testString2
确实出现了。
以下是您尝试使用IDE的示例代码。我还添加了一个ActionListener
来证明问题并不仅仅在于一个界面。
public class SOInner {
private ActionListener listenerExampleLambda = e -> {
//autocomplete DOES NOT work for these vars
int testVarInner = 2;
int testVarInner2 = 4;
};
private ActionListener listenerExampleClass = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//autocomplete works for these vars
int testVarInner = 2;
int testVarInner2 = 4;
}
};
private Comparable<SOInner> comparableExampleLambda = o -> {
//autocomplete DOES NOT work for these vars
String testString = "Hello";
String testString2 = "Hi";
return 0;
};
private Comparable<SOInner> comparableExampleClass = new Comparable<SOInner>() {
@Override
public int compareTo(SOInner o) {
//autocomplete works for these vars
String testString = "Hello";
String testString2 = "Hi";
return 0;
}
};
}
是否有针对此错误的解决方案或已将其记录下来?