函数式编程-Function 在实际环境的使用
1 package com.example.springstudy.test.functions; 2 3 import com.example.springstudy.entity.UserInfo; 4 5 import java.util.UUID; 6 import java.util.function.Function; 7 8 /** 9 * @Author: GuoDong 10 * @Description: function其实就是给你一个T(入参),你经过处理之后,给你一个R(出参),其实就是参数转换,和Consumer很类似 11 * @Date 2023-02-07 09:55:02 12 * @Version 1.0 13 **/ 14 public class FunctionTest { 15 16 17 /** 18 * 这里一般是提供入参方和结果处理方 19 * @param function 20 * @return 21 */ 22 public UserInfo handler(Function<String, UserInfo> function){ 23 // 这里提供入参 name 24 String name = UUID.randomUUID().toString(); 25 UserInfo userInfo = function.apply(name); 26 System.out.println(userInfo); 27 return userInfo; 28 } 29 30 public static void main(String[] args) { 31 AAAA aaaa = new AAAA(); 32 // 调用方式是 bean.方法名() 33 Function<String, UserInfo> function = aaaa::convert; 34 35 FunctionTest functionTest = new FunctionTest(); 36 functionTest.handler(function); 37 } 38 39 } 40 41 42 class AAAA{ 43 44 45 /** 46 * 这里是参数转换方 47 * 处理逻辑,入参和出参和Function约束的入参和出参保持一致 48 * 其实这里相当于function的实现,也就是convert。 49 * @param name 50 * @return 51 */ 52 public UserInfo convert(String name){ 53 UserInfo userInfo = new UserInfo(); 54 userInfo.setPhone("166667"); 55 userInfo.setPassWord("34999"); 56 userInfo.setUserName(name); 57 return userInfo; 58 } 59 60 }
还有一种比较简洁的写法,如下所示:Function函数里面是提供数据的,外部是加工数据的,外部是处理逻辑的,可以在内部里面获取外部处理好的结果。
public class FuncationHandler { public void handler(Function<UserInfo, String> function){ UserInfo userInfo = new UserInfo(); userInfo.setUserName("guodong"); userInfo.setPhone("17311227788"); String temp = function.apply(userInfo); System.out.println("返回处理加工结果--->:" + temp); } public static void main(String[] args) { FuncationHandler funcationHandler = new FuncationHandler(); funcationHandler.handler(data ->{ UserInfo userInfo = data; System.out.println(userInfo); return "返回处理加工结果:getPhone:"+data.getPhone() + ",getUserName:"+ data.getUserName(); }); } }
总结:function其实就是给你一个T(入参),你经过处理之后,给你一个R(出参),其实就是参数转换,和Consumer很类似。
郭慕荣博客园