我有一个可重现的测试用例:
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,还是我在这里缺少一些语言设计?
编辑:这不是一个重复的构造函数如何返回一个值,这实际上是一个构造函数,并不是关于构造函数的返回值,而是变量初始化.