相关疑难解决方法(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"void"和"non void"构造函数

我在java中编写这个简单的类只是为了测试它的一些功能.

public class class1 {
    public static Integer value=0;
    public class1() {
       da();
    }
    public int da() {
        class1.value=class1.value+1;
        return 5;
    }
    public static void main(String[] args) {
       class1 h  = new class1();
       class1 h2 = new class1();
       System.out.println(class1.value);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

2

但是在这段代码中:

public class class1 {
    public static Integer value=0;
    public void class1() {
        da();
    }
    public int da() {
        class1.value=class1.value+1;
        return 5;
    }
    public static void main(String[] args) {
        class1 h  = new class1();
        class1 h2 = …
Run Code Online (Sandbox Code Playgroud)

java constructor void

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×2

constructor ×1

java-8 ×1

lambda ×1

void ×1