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);
});
}