瞭解java的lambda表示式
阿新 • • 發佈:2018-12-08
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);
});
}