这个有效的Java代码会从javac 1.8 update 91中产生错误

时间:2016-09-15 07:23:18

标签: java lambda compiler-errors

我相当确定下面的代码是有效的Java 1.8代码:

import java.util.function.Consumer;

public class UnsolvableClass {

    private Consumer<Object> func = (Object theErrorVariable) -> {};

    public UnsolvableClass() {
        return;
    }

}

现在,您可能会想:&#34;为什么在构造函数中有返回?&#34; 嗯,那是因为我提出的最小的示例代码会产生这个错误。

请注意,在构造函数中使用return语句是完全合法的。

javac在编译时会抛出此错误。

UnsolvableClass.java:10: error: variable theErrorVariable might not have been initialized
        return;
        ^
1 error

我喜欢它认为错误发生在&#34; return&#34;当错误与...相关时,&#34; theErrorVariable&#34;变量未初始化。

如果我删除&#34;返回&#34;一行,一切都很好。另外,如果我删除lambda语句,它也可以编译好。

注意:我尝试使用Eclipse的java编译器编译它并成功编译。

听起来像javac的lambda支持中一个非常模糊的错误。 我错过了什么吗?

如果我不是,这是一个实际的错误,我会在哪里向Oracle报告?

1 个答案:

答案 0 :(得分:0)

这似乎是一个Java错误:QTimer