相关疑难解决方法(0)

为什么具有显式返回的空lambda和构造函数会导致编译器错误(Java Bug?)

我有一个可重现的测试用例:

public class TestCase {

    private final java.util.function.Consumer<Object> emptyCallback = result -> {};

    public TestCase() {
        return;
    }

    public static void main(String... args) {
        new TestCase();
    }
}
Run Code Online (Sandbox Code Playgroud)

使用Java 8,更新51(Oracle JDK).使用IntelliJ和javac都无法编译.

IntelliJ输出:

Error(6, 7): java: variable result might not have been initialized
Run Code Online (Sandbox Code Playgroud)

javac输出:

TestCase.java:6: error: Variable result might not have been initialized
        return;
        ^
1 error
Run Code Online (Sandbox Code Playgroud)

现在奇怪的是,删除return;Consumer将修复错误.这是一个java bug,还是我在这里缺少一些语言设计?

编辑:这不是一个重复的构造函数如何返回一个值,这实际上是一个构造函数,并不是关于构造函数的返回值,而是变量初始化.

java lambda java-8

13
推荐指数
1
解决办法
195
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1