【发布时间】:2017-04-20 15:04:53
【问题描述】:
我很难理解为什么以下代码可以编译:
public class MethodRefs {
public static void main(String[] args) {
Function<MethodRefs, String> f;
f = MethodRefs::getValueStatic;
f = MethodRefs::getValue;
}
public static String getValueStatic(MethodRefs smt) {
return smt.getValue();
}
public String getValue() {
return "4";
}
}
我知道为什么第一个赋值是有效的 - getValueStatic 显然匹配指定的 Function 类型(它接受一个 MethodRefs 对象并返回一个 String),但第二个让我感到困惑 - @987654329 @ 方法不接受任何参数,为什么分配给f 仍然有效?
【问题讨论】: