Java函数式接口及使用示例
Java函数式接口是Java 8中引入的一种新的接口类型。它是一个只包含一个抽象方法的接口,用来表示可用于Lambda表达式或方法引用的功能签名。Java中已经有一些接口可以用作函数式接口,比如Runnable和Comparator,但Java 8引入了一些新的函数式接口,如Consumer、Function和Predicate等。
Java函数式接口的特点是其抽象方法可以用Lambda表达式或方法引用来实现,从而大大简化了编程代码的实现。下面我们将介绍Java函数式接口的几个常用方法及其使用示例:
1. Consumer<T> 消费者接口
Consumer<T>是一个函数式接口,用于接受一个参数并执行一些操作,但没有返回值。其抽象方法accept()接受一个泛型参数T,表示要执行操作的参数。
下面是Consumer<T>的示例代码:
Consumer<String> consumer = (String str) -> System.out.println(str);
consumer.accept("hello world");
上述代码创建了一个Consumer<String>对象,使用Lambda表达式重写accept()方法来打印传入的字符串,然后调用accept()方法传入了一个字符串参数。
2. Function<T,R> 函数式接口
Function<T,R>是一个函数式接口,用于接受一个参数并返回结果。其抽象方法apply()接收一个泛型参数T,表示要执行操作的参数,并返回一个泛型参数R,表示该操作的结果。
下面是Function<T,R>的示例代码:
Function<Integer,String> function = (Integer i) -> { return i.toString(); };
String str = function.apply(123);
System.out.println(str);
上述代码创建了一个Function<Integer,String>对象,使用Lambda表达式重写apply()方法将Integer类型转换为String类型,然后调用apply()方法传入一个整数参数,并将返回值存储在一个字符串变量中,最后打印输出字符串变量的值。
3. Predicate<T> 谓词接口
Predicate<T>是一个函数式接口,用于接受一个参数并返回一个布尔值。其抽象方法test()接收一个泛型参数T并返回一个布尔值,表示该操作的结果。
下面是Predicate<T>的示例代码:
Predicate<Integer> predicate = (Integer i) -> { return i > 0; };
boolean result1 = predicate.test(5);
boolean result2 = predicate.test(-5);
System.out.println(result1);
System.out.println(result2);
上述代码创建了一个Predicate<Integer>对象,使用Lambda表达式重写test()方法判断整数是否大于0,然后分别调用test()方法传入整数参数,并将返回值存储在两个布尔变量中,最后打印输出布尔变量的值。
以上是Java函数式接口的介绍及几个常用方法的使用示例。函数式接口的出现使得Java 8中引入的Lambda表达式和方法引用得以实现,从而使得编写代码更加简单和方便。
