Yev*_*nov 5 java void functional-interface
我们有这个代码:
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
\n\n\n虽然
\ninterface J声明它有一个void函数,但Test::foo返回一个Object.
这么说是不准确的Test::foo。在不同的上下文中,它可能意味着不同的事情。
Supplier<Object> a = Test::foo;\nJ b = Test::foo;\nRunnable c = Test::foo;\nRun Code Online (Sandbox Code Playgroud)\n\n更准确的说法是Test::foo可以表示一个目标类型 ,其函数方法void返回或Object。
\n\n如果目标类型的函数类型有返回
\nvoid值,则 lambda 主体是语句表达式( \xc2\xa714.8 ) 或 void 兼容块 ( \xc2\xa715.27.2 )。
\n ...
\n 表达式语句通过计算表达式来执行;如果表达式有值,该值将被丢弃。
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |