Java函数式编程-10个实用的函数式接口
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函数式编程,学习这些函数式接口是一个很好的开始。
