1.lambda表达式的简单理解
简单来说,lambda表达式可以看做是用来替换匿名内部类的简便写法。
(x)->System.out.println(x);
左边是参数列表,右边是方法体。
2.lambda表达式的两种常见使用场景
1.申明函数式接口变量的时候直接通过lambdab表达式来声明,然后通过引用来调用函数式接口中被lamdba表达式实现的的方法。
2.将函数式接口作为一个形参传入一个方法,在该方法中调用函数式接口的方法体,例如下面代码中的happy()方法。然后用另外的方法去调用happy()方法,在调用的时候传入lambda表达式作为函数式接口的实现。
一般来说第二种方法用的比较多,你可以在happy()方法中写另外的业务逻辑代码。
@FunctionalInterface
public interface MyInterface<T> {
public boolean compare(T t );
}
public class ExampleForCsdn {
@Test
public void lambadaTest(){
MyInterface<String> myInterface = (x)->x instanceof String;
System.out.println(myInterface.compare("123"));
}
@Test
public void lambdaTest2(){
happy("123",(x)->x instanceof String);
}
public void happy(String a,MyInterface<String> myInterface){
System.out.println(myInterface.compare(a));
}
}
3.java本身定义的四大核心函数式接口
1.Consumer<T>:消费型接口,void accept(T t),有传入参数没有返回值
2.Supplier<T>:供给型接口,T get(),没有传入参数但是有返回值
3.Funcion<T>:函数型接口,R apply(T t),有参入参数和返回值
4.Predicate<T>:断言言接口,Boolean test(T t),有传入参数,返回值为boolean
4.总结与思考
只要用到匿名内部类的地方都可以使用lambda来替换。