Loading

& Java8 Function接口

import org.junit.Test;

import java.util.function.Function;

public class AppTest {


    /**
     * java8 - Function函数接口
     */
    @Test
    public void testApply() {
        Function<String,String> helloFunction = str -> {
            System.out.println(str);
            return "666";
        };
        helloFunction.apply("123");
    }




    /**
     *
     * 通过传入不同的Function函数,来执行不同的一个业务逻辑
     * 将有差异的业务代码,交给方法的调用方
     * 解决了重复去写业务逻辑的硬编码问题,解耦业务逻辑,实现了我们的优雅编程
     * @param id /
     * @param function  /
     * @return  /
     */
    public <T,R> R handleData(T id, Function<T,R> function) {


        //1. 业务1 .....
        System.out.println("业务1...");


        //2. 业务2 .....
        R apply = function.apply(id);

        //3. 业务3 .....
        System.out.println("业务3...");


        return apply;

    }


    @Test
    public void testApply2() {
        Function<Integer,Integer> demoFunction1 = str -> {
            System.out.println(str);
            return 7;
        };
        Integer integer = handleData(1, demoFunction1);
        System.out.println(integer);


        System.out.println("----------------------------------");

        Function<String,String> demoFunction2 = str -> {
            System.out.println(str);
            return "7str";
        };
        String string = handleData("1str", demoFunction2);
        System.out.println(string);

    }


}
posted @ 2022-10-04 21:15  yescctv6  阅读(44)  评论(0)    收藏  举报