【发布时间】:2019-09-04 09:51:29
【问题描述】:
考虑以下两个功能接口(@987654321@):
public interface Runnable {
void run();
}
public interface Callable<V> {
V call();
}
假设你有overloaded方法调用如下:
void invoke(Runnable r) {
r.run();
}
<T> T invoke(Callable<T> c) {
return c.call();
}
考虑下面的方法调用
String s = invoke(() -> "done");
这将调用 invoke(Callable) 。但是如何?编译器如何确定类型是可调用的?我没有从我读过的 Oracle 文档中理解。
【问题讨论】:
-
这真的可以编译吗?
-
@christopher 是的。
标签: java lambda java-8 functional-interface