搜尋

首頁  >  問答  >  主體

java8中的lambda定义的函数该如何引用

定义好的函数,不知道该如何使用。

// 不知道怎么引用
BinaryOperator<Long> add = (x, y) -> x + y;
PHP中文网PHP中文网2812 天前331

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:20:55

    public class Main {
        
        private long t, u;
        
        private Long test(BinaryOperator<Long> b) {
            return b.apply(t, u);
        }
        public static void main(String[] args) {
            
            Main m = new Main();
            m.t = 1; m.u = 2;
            BinaryOperator<Long> b = (x, y) -> x + y;
            System.out.println(m.test(b));
        }
    }

    單獨拉出來是沒辦法用的,Lambda只是定義了資料的操作方式,也就是定義了一個函數。具體在哪裡用,需要定義一個方法,參數為lambda表達式(函數式介面),然後方法內部呼叫lambda實際的操作(介面定義的中那一個函數),例如accept。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 09:20:55

    Lambda定义的并不是函数,它只是匿名类的缩写方式,其生成的还是一个对象。就如你的例子中,它生成的一个BinaryOperator<Long>對象,之後就是這個類別的實例物件了,該怎麼用就跟該怎麼用物件一樣。

    回覆
    0
  • 取消回覆