为什么会编译此方法引用赋值?
我很难理解为什么编译以下代码:
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
getValue
f