繁体   English   中英

java.util.function.Function 如何拥有 Object 类 toString 方法的方法引用

[英]How java.util.function.Function can have a method reference of Object class toString method

Function<Integer, String> intToString = Object::toString

上面的代码是方法参考的例子

请帮助我它是如何工作的。

根据我的理解,方法参考应该具有与功能接口抽象方法( R apply(T) )相同的方法签名。

基本上,你是对的。 将一些东西分配给一个声明的变量

Function<Integer, String> intToString = value;

然后value必须是Function<Integer, String> ,具有

public String apply(Integer t) { ... }

方法。

棘手的是像Object::toString这样的方法引用表达式是语法糖

Function<Integer, String> intToString = new Function<Integer,String>() {
    public String apply(Integer t) { 
        return t.toString();
    }
};

它如何知道仅在表达式Object::toString中未提及的IntegerString类型参数? 那来自作业的左侧。 编译器知道需要什么类型的函数,并从方法引用Object::toString创建一个合适的内部匿名Function实例。

警告:方法引用Object::toString仅在编译器可以明确推断出预期类型的​​情况下才允许,因为此表达式的类型不清楚。 根据上下文(例如左侧),完全相同的Object::toString也可以成为Consumer<Point>而不是Function<Integer, String> ,然后实现方法void accept(Point t)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM