相关疑难解决方法(0)

方法参考 - 使用Consumer参数将Function传递给方法

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

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);
}
Run Code Online (Sandbox Code Playgroud)

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

但是为什么它将这个未绑定的方法引用转换Consumer为直接作为方法参数调用的时候,并且在我Function明确传递时它不会执行它?

java-8 functional-interface method-reference

4
推荐指数
1
解决办法
115
查看次数