簡體   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