BiFunction 和 函数式接口
平常写业务的时候,经常是第一手去设计这个框架,因为我们经常有对不同品牌的做不同处理的逻辑
所以经常会有大量重复的业务逻辑能复用,但是只有其中一小部分需要被更改。
遗憾的是,在开发日趋成熟,功能完善的代码都已经封到jar包加密然后封到maven里,然后每个品牌的处理方式也变成了只可调用的子模块
因为不再用一个模块,所以很多方法都不能共用(不在一个包里了)。
这个时候,聪明的我想到了之前写分页逻辑,每个品牌的报告的分页爬取逻辑都不一样,拥有15年经验的大哥好像写过一个Function<String,String>,能直接把函数当作参数传进方法里
这就很爽,同样也可以应对大部分业务逻辑相同,少部分需要修改的情况。
我们一般称为“函数式接口”
Java 8 引入了函数式接口,提供了一种新的方法定义和传递行为的方式。函数式接口是指只包含一个抽象方法的接口。这种接口的实例可以通过 Lambda 表达式、方法引用或构造函数引用来创建,让代码更加简洁和可读性更强。
确实好处多多,常见的四种分别是
下面一些常用的函数式接口及其用途:
Predicate:接受一个输入参数,返回一个布尔值结果。
Consumer:接受一个输入参数,不返回任何结果。
Function<T, R>:接受一个输入参数,返回一个结果。
Supplier:不接受任何输入参数,返回一个结果。
然而没有接受两个参数及以上的,这是不可能的,只不过我没发现
于是我虚心向 chatGPT请教,
得到
Bifunction是Java 8中的一个函数式接口,它接受两个参数并返回一个结果。下面是一个例子,它将两个整数相加并返回它们的和:
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b; Integer result = add.apply(2, 3); System.out.println(result); // 5
so,轻松解决顺便记录一下,这种思想真的很适合我们现在的开发场景