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

Java函数式编程-10个实用的函数式接口

发布时间:2023-06-19 14:59:27

Java函数式编程已经成为了最近几年的热门话题。在Java 8中,引入了Lambda表达式、方法引用和函数式接口,这些功能可以提高代码的简洁性,可读性和可维护性。函数式接口是一个仅包含一个抽象方法的Java接口,可以用作Lambda表达式的类型。本文将介绍10个常见的、实用的函数式接口,以及它们的用法和示例。

1. Runnable

Runnable是一个没有参数和返回值的函数式接口。它的抽象方法run()定义了要执行的操作。

示例:

Runnable runnable = () -> System.out.println("Hello world!");
Thread thread = new Thread(runnable);
thread.start();

2. Supplier

Supplier是一个没有参数但是有返回值的函数式接口。它的抽象方法get()定义了要返回的值。

示例:

Supplier<String> supplier = () -> "Hello world!";
String result = supplier.get();
System.out.println(result);

3. Consumer

Consumer是一个有参数但是没有返回值的函数式接口。它的抽象方法accept()定义了要执行的操作。

示例:

Consumer<String> consumer = (str) -> System.out.println(str);
consumer.accept("Hello world!");

4. Function

Function是一个有参数和返回值的函数式接口。它的抽象方法apply()定义了要执行的操作并返回结果。

示例:

Function<Integer, String> function = (num) -> "Result: " + num;
String result = function.apply(100);
System.out.println(result);

5. BiFunction

BiFunction是一个有两个参数和返回值的函数式接口。它的抽象方法apply()定义了要执行的操作并返回结果。

示例:

BiFunction<Integer, String, String> biFunction = (num, str) -> "Result: " + num + "-" + str;
String result = biFunction.apply(100, "Hello world!");
System.out.println(result);

6. Predicate

Predicate是一个有一个参数并返回一个布尔值的函数式接口。它的抽象方法test()定义了要执行的操作并返回结果。

示例:

Predicate<Integer> predicate = (num) -> num > 100;
boolean result = predicate.test(200);
System.out.println(result);

7. BiPredicate

BiPredicate是一个有两个参数并返回一个布尔值的函数式接口。它的抽象方法test()定义了要执行的操作并返回结果。

示例:

BiPredicate<Integer, String> biPredicate = (num, str) -> num > 100 && str.length() > 5;
boolean result = biPredicate.test(200, "Hello world!");
System.out.println(result);

8. UnaryOperator

UnaryOperator是一个有一个参数和返回值的函数式接口。它的抽象方法apply()定义了要执行的操作并返回结果,参数类型和返回类型相同。

示例:

UnaryOperator<Integer> unaryOperator = (num) -> num * num;
int result = unaryOperator.apply(10);
System.out.println(result);

9. BinaryOperator

BinaryOperator是一个有两个参数和返回值的函数式接口。它的抽象方法apply()定义了要执行的操作并返回结果,参数类型和返回类型相同。

示例:

BinaryOperator<Integer> binaryOperator = (num1, num2) -> num1 + num2;
int result = binaryOperator.apply(100, 200);
System.out.println(result);

10. RunnableEx

RunnableEx是一个可以抛出异常的函数式接口。它的抽象方法run()定义了要执行的操作并抛出异常。

示例:

@FunctionalInterface
interface RunnableEx {
    void run() throws Exception;
}

RunnableEx runnableEx = () -> { throw new Exception("Exception!"); };
try {
    runnableEx.run();
} catch (Exception e) {
    System.out.println(e.getMessage());
}

这些是Java中最常用的一些函数式接口。使用它们可以简化代码,增加可读性和可维护性。它们是Java函数式编程的核心,如果你想要深入了解Java函数式编程,学习这些函数式接口是一个很好的开始。