在这篇文章中,我们将通过示例来学习 Java 函数式接口。
一、函数式接口的特点
- 只包含一个抽象方法的接口称为函数式接口。
- 它可以有任意数量的默认静态方法,但只能包含一个抽象方法。它还可以声明对象类的方法。
- 函数接口也称为单一抽象方法接口或SAM 接口。
- 函数式接口只有在没有任何抽象方法时才可以扩展另一个接口。
- Java API 具有许多单方法接口,例如 Runnable、Callable、Comparator、ActionListener等。它们可以使用匿名类语法来实现和实例化。
二、接口示例
创建一个自定义的Sayable接口,这是一个使用@FunctionalInterface注解的函数式接口。@FunctionalInterface注解表示该接口是一个函数式接口,并且只包含一个抽象方法。
1.自定义函数接口示例:
@FunctionalInterface
interface Sayable{
void say(String msg); // abstract method
}
让我们通过main()方法来演示一个自定义的函数式接口。我们使用Lambda表达式来实现函数式接口。
public class FunctionalInterfacesExample {
public static void main(String[] args) {
Sayable sayable = (msg) -> {
System.out.println(msg);
};
sayable.say("Say something ..");
}
}
2.Predefined 函数接口
Java提供了Predefined的函数式接口,通过使用 lambda 和方法引用来处理函数式编程。
Predicate是检查条件的函数,它接受一个参数并返回boolean结果。
让我们来看一下Predicate接口的内部实现。
import java.util.function.Predicate;
public interface Predicate {
boolean test(T t);
default Predicate and(Predicate