Netbeans自动完成功能在lambda表达式中不起作用

时间:2018-01-24 13:55:34

标签: java netbeans lambda anonymous-inner-class

我在Netbeans 8.2中遇到了一个奇怪的错误。

当声明一个带有lambda表达式的对象时,lambda中变量的自动完成似乎不起作用,而是我看到了全局变量,关键字的建议以及截图中显示的其他内容。

如您所见,testStringtestString2无处可见。

我尝试过其他对象,结果总是一样。

现在,如果我们对匿名内部类做同样的事情,我们可以看到我们的变量testStringtestString2确实出现了。 enter image description here

以下是您尝试使用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;
        }
    };
}

是否有针对此错误的解决方案或已将其记录下来?

0 个答案:

没有答案