函数式接口
Only MI
努力是一种习惯,不是一时热血
展开
-
常用的函数式接口——Function接口
Function接口:java.util.function.Function<T,R> 接口用来根据一个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件。抽象方法:apply:Function 接口中最主要的抽象方法为: R apply(T t) ,根据类型T的参数获取类型R的结果。使用的场景例如:将 String 类型转换为 Integer 类型。使用示例:public class Demo01Function { /* 定义一个方法原创 2020-10-18 16:06:44 · 1632 阅读 · 0 评论 -
常用的函数式接口——Predicate接口
Predicate接口:java.util.function.Predicate接口作用:对某种数据类型的数据进行判断,结果返回一个boolean值抽象方法:test:Predicate接口中包含了一个抽象方法:boolean test(T t):用来对指定数据类型数据进行判断的方法结果;符合条件,返回true不符合条件,返回false使用案例:public class Demo01Predicate { /* 定义一个方法 参数传递一个Strin原创 2020-10-18 14:20:01 · 2860 阅读 · 0 评论 -
常用的函数式接口——Consumer接口
Consumer接口:java.util.function.Consumer 接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。Consumer接口是一个消费型接口,泛型执行什么类型,就可以使用accept方法消费什么类型的数据至于具体怎么消费(使用),需要自定义(输出,计算...)抽象方法:accept:Consumer 接口中包含抽象方法 void accept(T t) ,意为消费一个指定泛型的数据。使用案例: */ publi原创 2020-10-18 09:26:16 · 1545 阅读 · 2 评论 -
常用函数接口——Supplier接口
Supplier接口:java.util.function.Supplier<T>接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。Supplier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据使用案例:public class Demo01Supplier { //定义一个方法,方法的参数传递Supplier<T>接口,泛型执行String,get方法就会返回一个St原创 2020-10-17 19:28:04 · 3246 阅读 · 1 评论 -
函数式编程——使用Lambda作为参数和返回值
如果抛开实现原理不说,Java中的Lambda表达式可以被当作是匿名内部类的替代品。如果方法的参数是一个函数式接口类型,那么就可以使用Lambda表达式进行替代。使用Lambda表达式作为方法参数,其实就是使用函数式接口作为方法参数。函数接口作为方法的参数案例:例如 java.lang.Runnable 接口就是一个函数式接口,假设有一个 startThread 方法使用该接口作为参数,那么就可以使用Lambda进行传参。这种情况其实和 Thread 类的构造方法参数为 Runnable 没有本质区原创 2020-10-17 17:30:03 · 2046 阅读 · 1 评论 -
日志案例——性能浪费以及优化(Lambda延迟执行)
性能浪费的日志案例:注:日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。一种典型的场景就是对参数进行有条件使用,例如对日志消息进行拼接后,在满足条件的情况下进行打印输出:/* 日志案例 发现以下代码存在一些性能浪费的问题 调用showLog方法,传递的第二个参数是一个拼接后的字符串 先把字符串拼接好,然后再调用showLog方法 showLog方法中如果传递的日志等级不是1级 字符串就白拼接了,存在浪费 */p原创 2020-10-17 15:55:02 · 360 阅读 · 0 评论 -
函数式接口概念及使用
函数式接口概念:函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。格式只要确保接口中有且仅有一个抽象方法即可:修饰符 interface 接口名称 {public abstract 返回值类型 方法名称(可选参数信息);// 其他非抽象方法内容}@Functiona原创 2020-10-17 15:46:32 · 1669 阅读 · 1 评论