1. 程式人生 > >瞭解java的lambda表示式

瞭解java的lambda表示式

lambda更加簡化了我們的程式碼,讓我看來其實就是省去了去寫實現類或匿名實現類的過程;

1.一個簡單的實現自定義lambda

    @FunctionalInterface
    interface Excutor2 {
        int run(int a ,int b);
    }

首先@FunctionalInterface註釋,是約束滿足函式式介面;其中約束為只能有一個public的方法;

    @Test
    public void t3(){
        Excutor2 ee = (a,b)->{
            System.out.println(1111);
            return a+b;
        };
        int run = ee.run(1, 2);
        Excutor2 ee2 = (a,b)->a-b;
        int run2 = ee2.run(1, 2);
    }

以上就是使用自定義的lambda,很簡單,如果不使用的話,則需要我們編寫實現類,呼叫實現類引用方法,或者寫匿名實現類;

    Excutor2 e3 = new Excutor2() {
            @Override
            public int run(int a, int b) {
                return a * b;
            }
        };

 

2.實現一個foreach表示式:

public class TestForeach {

    class MyList<T> {
        List<T> list = new ArrayList<>();

        MyList add(T t) {
            list.add(t);
            return this;
        }

        void foreach(Excutor t) {
            for (T tt : list) {
                t.run(tt);
            }
        }
    }

    @FunctionalInterface
    interface Excutor {
        void run(Object t);
    }
}
    @Test
    public void t() {
        MyList m = new MyList();
        m.add(1).add(2).add(3);
        m.foreach(a->{
            System.out.println(a);
        });
    }