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