欢迎访问宙启技术站
智能推送

Java中函数式接口的一些示例

发布时间:2023-05-20 19:06:46

Java中的函数式接口是指仅包含一个抽象方法的接口。由于只包含一个方法,它们可以被用作Lambda表达式的类型,使得Java中函数式编程变得更方便。

以下是一些Java中函数式接口的示例:

1. Predicate<T>

Predicate接口用于传递一个参数,并返回一个Boolean值。它包含一个test()方法,该方法接收一个泛型类型的参数,并返回一个Boolean值。Predicate通常用于过滤数据或确定某些条件是否成立。

// Predicate示例
Predicate<Integer> isEven = n -> n % 2 == 0;
System.out.println(isEven.test(4)); // true
System.out.println(isEven.test(5)); // false

2. Consumer<T>

Consumer接口表示需要传递一个参数进行操作,但是不需要返回任何结果。它包含一个accept()方法,该方法接收一个泛型类型的参数,但不返回任何值。Consumer通常用于执行一系列操作,例如输出数据或修改数据。

// Consumer示例
Consumer<String> printUpperCase = s -> System.out.println(s.toUpperCase());
printUpperCase.accept("hello"); // HELLO

3. Function<T, R>

Function接口表示需要传递一个参数进行操作,并返回一个结果。它包含一个apply()方法,该方法接收一个泛型类型的参数,并返回一个泛型类型的结果。Function通常用于转换数据或执行某些操作并返回结果。

// Function示例
Function<Integer, Double> half = n -> n / 2.0;
System.out.println(half.apply(4)); // 2.0

4. Supplier<T>

Supplier接口不需要传递任何参数,只需要返回一个结果。它包含一个get()方法,该方法不接收任何参数,并返回一个泛型类型的结果。Supplier通常用于提供数据或配置信息。

// Supplier示例
Supplier<Double> randomDouble = () -> Math.random();
System.out.println(randomDouble.get()); // 随机的Double值

5. BiFunction<T, U, R>

BiFunction接口表示需要传递两个参数进行操作,并返回一个结果。它包含一个apply()方法,该方法接收两个泛型类型的参数,并返回一个泛型类型的结果。它常用于将两个对象组合在一起,产生一个结果。

// BiFunction示例
BiFunction<Integer, Integer, Integer> sum = (a, b) -> a + b;
System.out.println(sum.apply(2, 3)); // 5

这些函数式接口虽然只有一个方法,但是它们都具有不同的用途和操作。它们可以组合在一起,产生更高层次的操作。在Java 8及更高版本中,函数式编程已经成为了Java的一部分,只需几行代码,我们就可以利用Lambda表达式和函数式接口轻松地执行各种操作。