Java8——新特性篇 --Lambda表达式如何使用与应用场景分析

Java8 已经沦为很多公司的JDK版本了,所以学习Java8的新特性也是重中之重

Java8—Lambda表达式应用:

1.预热

lambda 使用 方式:
    1. 无参使用 ()-> System.out.println("sss") 
    2. 单个参数可以忽略小括号 a-> System.out.println(a.getId())
    3. 多参数多行数 
    (a,b)->{
                        ..... 有返回值的话:return 返回值。
                  }

2.四大函数式接口:

 1. Consumer<T> 消费接口 void accept(T t)
 2. Supplier<T> 供给型接口 T get() 
 3. Predicate<T> 断言型接口 boolean test(T t)
 4. Function<T,R>   函数型接口 R apply(T t)

3.函数式接口的使用方式:

/** * * @param <T> * @param <R> */
public abstract  class ExerciseLambda<T,R> {

    /** * 消费 * @param consumer */
    public void acceptVoid(T user,Consumer<T> consumer){
        consumer.accept(user);
    }

    /** * 供给型接口 * @param supplier * @return */
    public T returnEntity(Supplier<T> supplier){
        return supplier.get();
    }

    /** * 函数式接口 * @param entity * @param function * @return */
    public R toolFunction(T entity,Function<T,R> function){
        return function.apply(entity);
    }

    /** * 判断 * @param t * @param predicate * @return */
    public boolean confirm(T t, Predicate<T> predicate){
        return predicate.test(t);
    }
}
public class UserLambdaService extends ExerciseLambda<User,UserVo> {

}
public  class LambdaFactory{
    UserLambdaService lambdaService = new UserLambdaService();

    /** * 供给型接口 在参数上写方法。 * @return */
    private User testSupplier(){
        return lambdaService.returnEntity(() -> {
            User tempUser = new User();
            tempUser.setId("110");
            return tempUser;
        });
    }
    /** * 消费测试 */
    @Test
    public void testAccept(){
        User user = testSupplier();
        lambdaService.acceptVoid(user,user1 -> System.out.println(user.getId()));
    }

    /** * */
    public UserVo testFunction(){
        User user = testSupplier();
        return lambdaService.toolFunction(user,eo->{
            UserVo userVO = new UserVo();
            userVO.setId(eo.getId());
            return userVO;
        });
    }

    /** * 判断是否成立 */
    @Test
    public void test(){
        User user = testSupplier();
        UserVo userVo = testFunction();
        if(lambdaService.confirm(user,userTemp -> userTemp.getId().equals(userVo.getId()))){
            System.out.println("成功了");
        }
    }

小结:
好处就是可以进行不定行数的插入实现的方法,来促使得到最终结果,使方法更加灵活,而不需要改已经定义好的方法,此处没有太多实例说明,但是参数传方法,已经说明了一切,也是一种解耦方式。

    原文作者:学zhe
    原文地址: https://blog.csdn.net/qq_36324685/article/details/80843235
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞