Lambda方法引用

 

 

package com.sea.bean;

@FunctionalInterface
interface ClickListenner<T> {
    void onclick(T a);
}

class Receiver {
    public void doclick(String msg) {
        System.out.println(msg);
    }
}

class Provider {
    private ClickListenner<String> listenner;

    public Provider(ClickListenner<String> listenner) {
        this.listenner = listenner;
    }

    public void sendMessage() {
        listenner.onclick("click...");
    }
}

public class TestA {
    public static void main(String[] args) {
        {
            //原始写法
            Receiver receiver = new Receiver();
            Provider provider = new Provider(new ClickListenner<String>() {

                @Override
                public void onclick(String msg) {
                    receiver.doclick(msg);
                }
            });
            provider.sendMessage();
        }
        {
            // Lambda下的简写
            Receiver receiver = new Receiver();
            Provider provider = new Provider((msg) -> {
                receiver.doclick(msg);
            });
            provider.sendMessage();
        }
        {
            // Lambda下的极简写法
            Receiver receiver = new Receiver();
            Provider provider = new Provider(receiver::doclick);
            provider.sendMessage();
        }
    }
}

 

posted on 2018-08-01 15:04  疯狂的妞妞  阅读(352)  评论(0编辑  收藏  举报

导航