小编Yev*_*nov的帖子

为什么带有 void 返回类型方法的函数接口接受任何返回类型方法?

我们有这个代码:

public class Test {
    public static Object foo() {
        System.out.println("Foo");
        return new Object();
    }

    public static void main(String[] args) {
        J j = Test::foo;
        j.m();
    }

}
interface J {
    void m();
}
Run Code Online (Sandbox Code Playgroud)

这段代码会起作用。关键线是

J j = Test::foo;
Run Code Online (Sandbox Code Playgroud)

虽然interface J声明它有一个void函数,但Test::foo返回一个Object.

虽然我们不能在实现接口时覆盖方法(这是显而易见的)。这仅在接口的方法为 时有效void,否则不会编译代码。有人能说出为什么这会以这种方式工作吗?:D

java void functional-interface

5
推荐指数
1
解决办法
945
查看次数

标签 统计

functional-interface ×1

java ×1

void ×1