Method Reference: pasar la función al método con el argumento Consumer
Estoy aprendiendo acerca de las referencias a métodos de Java 8 y tengo dificultades para entender por qué funciona esto.
class Holder {
private String holded;
public Holder(String holded) {
this.holded = holded;
}
public String getHolded() {
return holded;
}
}
private void run() {
Function<Holder, String> getHolded = Holder::getHolded;
consume(Holder::getHolded); //This is correct...
consume(getHolded); //...but this is not
}
private void consume(Consumer<Holder> consumer) {
consumer.accept(null);
}
Como puedes ver enrun
método -Holder::getHolded
devuelve la referencia del método independiente que puede invocar pasando el objeto de tipoHolder
como argumento. Me gusta esto:getHolded.apply(holder)
Pero por qué lanza esta referencia de método independiente aConsumer
cuando se invoca directamente como un argumento de método, y no lo hace cuando pasoFunction
explícitamente