函数式接口
java.util.function :
Consumer :消费型函数接口 void accept(T t)
Function :函数型接口 R apply(T t)
Predicate :判断型接口 boolean test(T t)
Supplier :供给型接口 T get()
Consumer - 消费型函数接口
该接口代表了一个接受一个参数并且不返回结果的操作。
方法签名:void accept(T t)
Function<T, R> - 函数型接口
T代表参数的类型 R是返回值的类型
该接口代表了一个接受一个参数并返回结果的操作。
方法签名:R apply(T t)
Predicate - 判断型接口
该接口代表了一个接受一个参数并返回布尔值的判断操作。
方法签名:boolean test(T t)
Supplier - 供给型接口
该接口代表了一个不接受参数但返回结果的操作,用于提供数据
方法签名:T get()
代码示例:
/**** @author sunyuan* @date 2023/9/25 21:06*/
@Slf4j
public class FunctionDemo {public static void main(String[] args) {consumerTest();functionTest();predicateTest();supplierTest();}/*** Consumer<T> - 消费型函数接口* 该接口代表了一个接受一个参数并且不返回结果的操作。* 方法签名:void accept(T t)*/public static void consumerTest() {log.info("consumerTest");Consumer<String> consumer = str -> System.out.println(str);consumer.accept("子小远");}/*** Function<T, R> - 函数型接口* T代表参数的类型 R是返回值的类型* 该接口代表了一个接受一个参数并返回结果的操作。* 方法签名:R apply(T t)*/public static void functionTest() {log.info("functionTest");Function<String, Integer> function = str -> str.length();Integer apply = function.apply("子小远");log.info("functionTest:{}", apply);}/*** Predicate<T> - 判断型接口* 该接口代表了一个接受一个参数并返回布尔值的判断操作。* 方法签名:boolean test(T t)*/public static void predicateTest() {log.info("predicateTest");Predicate<String> predicate = str -> str.isEmpty();boolean test = predicate.test("子小远");log.info("predicateTest:{}", test);}/*** Supplier<T> - 供给型接口* 该接口代表了一个不接受参数但返回结果的操作,用于提供数据。* 方法签名:T get()*/public static void supplierTest() {log.info("supplierTest");Supplier<Integer> supplier = () -> new Random().nextInt();Integer s = supplier.get();log.info("supplierTest:{}", s);}}