网站建设分金手指专业二七,黄页网站查询数据,wordpress 主页修改,锦浪科技(300763) 股吧Java学习-Function接口 1 函数式接口简介和学习地址2 两种常见的函数式接口2.1 Runnable#xff1a;执行接口#xff0c;不接收参数#xff0c;也无返回结果。2.2 Consumer#xff1a;作为消费接口#xff0c;接收一个参数#xff0c;无返回结果。 3 初识3.1 定义Functio… Java学习-Function接口 1 函数式接口简介和学习地址2 两种常见的函数式接口2.1 Runnable执行接口不接收参数也无返回结果。2.2 Consumer作为消费接口接收一个参数无返回结果。 3 初识3.1 定义Function接口3.1.1 定义ThrowExceptionClassFunction接口3.1.2 定义BranchHandleDemoFunction接口3.1.3 定义PrentOrElseDemoFunction接口 3.2 定义service类3.2.1 isTrue方法3.2.2 isTrueOrFalse方法3.2.3 isPresent方法 3.3 定义control类 4 总结 1 函数式接口简介和学习地址 函数式接口可以被隐式转换为 lambda 表达式。 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法但是可以有多个非抽象方法的接口。 参考地址1菜鸟教程 参考地址2B站视频
2 两种常见的函数式接口
2.1 Runnable执行接口不接收参数也无返回结果。 2.2 Consumer作为消费接口接收一个参数无返回结果。 3 初识
3.1 定义Function接口
首先是接口Interface其次接口上方写上注解FunctionalInterface定义抽象方法[函数式接口只能有且仅有一个方法]
3.1.1 定义ThrowExceptionClassFunction接口
package functioninterfacedemo.util;/*** author klxz* description ThrowExceptionClass* date 2024/4/7*/
FunctionalInterface
public interface ThrowExceptionClass {/*** throwMessage** param message message*/void throwMessage(String message);
}3.1.2 定义BranchHandleDemoFunction接口
package functioninterfacedemo.util;/*** author klxz* description BranchHandleDemo* date 2024/4/7*/
FunctionalInterface
public interface BranchHandleDemo {/*** trueOrFalseHandler** param trueHandler trueHandler* param falseHandler falseHandler*/void trueOrFalseHandler(Runnable trueHandler, Runnable falseHandler);
}3.1.3 定义PrentOrElseDemoFunction接口
package functioninterfacedemo.util;import java.util.function.Consumer;/*** author klxz* description PrentOrElseDemo* date 2024/4/7*/
FunctionalInterface
public interface PrentOrElseDemoT extends Object {/*** presentOrElseHandler** param consumer consumer* param falseAction falseAction*/void presentOrElseHandler(Consumer? super T consumer, Runnable falseAction);
}3.2 定义service类
命名为service目的是让大家明白这个是执行类
3.2.1 isTrue方法
调用isTrue方法接收control传入的参数flag如有异常则进行Function接口ThrowExceptionClass 的处理
3.2.2 isTrueOrFalse方法
调用isTrueOrFalse方法接收control传入的参数flag如有异常则进行Function接口BranchHandleDemo的处理Runnable不需要接收参数直接调用run()执行如果flag为true则进行trueHandler.run()处理如果flag为false则进行falseHandler.run()处理
3.2.3 isPresent方法
调用isPresent()方法接收control传入的参数obj如有异常则进行Function接口PrentOrElseDemo的处理Consumer需要接收一个参数但不返回结果如果obj不为null则进行action.accept(obj)处理Runnable不需要接收参数直接调用run()执行如果obj为null则进行trueHandler.run()处理
package functioninterfacedemo;import functioninterfacedemo.util.BranchHandleDemo;
import functioninterfacedemo.util.PrentOrElseDemo;
import functioninterfacedemo.util.ThrowExceptionClass;/*** author klxz* description 工具类* date 2024/4/7*/
public class ServiceClass {public static ThrowExceptionClass isTrue(boolean flag) {return (message) - {if (!flag) {System.out.println(current is message !);}};}public static BranchHandleDemo isTrueOrFalse(boolean flag) {return ((trueHandler, falseHandler) - {if (flag) {trueHandler.run();} else {falseHandler.run();}});}public static PrentOrElseDemo? isPresent(String obj) {return (action, runnable) - {if (obj ! null) {action.accept(obj);} else {runnable.run();}};}
}3.3 定义control类
分别调用service中的三个方法查看运行结果
package functioninterfacedemo;/*** author klxz* description 练习函数式接口的demo* date 2024/4/7*/
public class ControlClass {public static void main(String[] args) {// 传参为true调用throwMessage方法ServiceClass.isTrue(true).throwMessage(current is false!);// 传参为false调用throwMessage方法ServiceClass.isTrue(false).throwMessage(current is false!);// 传参为true调用trueOrFalseHandler方法ServiceClass.isTrueOrFalse(true).trueOrFalseHandler(() - {System.out.println(this is true handler!);}, () - {System.out.println(this is false handler!);});// 传参为false调用trueOrFalseHandler方法ServiceClass.isTrueOrFalse(false).trueOrFalseHandler(() - {System.out.println(this is true handler!);}, () - {System.out.println(this is false handler!);});// 传参不为null调用presentOrElseHandler方法ServiceClass.isPresent(hello world!).presentOrElseHandler(System.out::println, () - {System.out.println(current object is null!);});// 传参为null调用presentOrElseHandler方法ServiceClass.isPresent(null).presentOrElseHandler(System.out::println, () - {System.out.println(current object is null!);});}
}4 总结
通过Function可以很优雅的写出业务逻辑代码让代码看起来清爽~
持续学习中有问题可以在评论区留言交流。