我正在学习

Java 8中的方法参考,我很难理解为什么这有效?

class Holder {

private String holded;

public Holder(String holded) {

this.holded = holded;

}

public String getHolded() {

return holded;

}

}

private void run() {

Function getHolded = Holder::getHolded;

consume(Holder::getHolded); //This is correct...

consume(getHolded); //...but this is not

}

private void consume(Consumer consumer) {

consumer.accept(null);

}

正如您在run方法中看到的那样–Holder :: getHolded返回未绑定的方法引用,您可以通过将Holder类型的对象作为参数传递来调用它.像这样:getHolded.apply(持有人)

但是当它直接作为方法参数调用时,它为什么会将这个未绑定的方法引用强制转换为Consumer,而当我明确地传递Function时它不会这样做?

更多推荐

java consumer_java-8 – 方法参考 – 使用Consumer参数将Function传递给方法