我正在学习
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传递给方法
发布评论