J'ai du mal à comprendre pourquoi le code suivant se compile :
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";
}
}
Je peux voir pourquoi la première affectation est valable - getValueStatic
correspond manifestement au Function
(il accepte un MethodRefs
et renvoie un String
), mais la seconde me laisse perplexe - le getValue
n'accepte aucun argument, alors pourquoi est-il toujours valable de l'assigner à la méthode f
?