Java函数接口(JavaFunctionInterface)
在Java 8中,引入了一个新的概念——函数接口(Functional Interface),它是一个只有一个抽象方法的接口,可以被Lamda表达式或方法引用所映射。
Java中有许多内置函数接口,如:Runnable、Comparator、Function等等,但我们也可以自己定义一个自己的函数接口。
Java提供了一个注解@FunctionalInterface,用来标识一个接口是函数接口。如果一个接口被标识为函数接口,但实际上却有多于一个的抽象方法,或继承了一个有多于一个抽象方法的接口,编译器就会报错。
下面是一个简单的函数接口示例:
@FunctionalInterface
public interface MyFunctionInterface {
int doSomething(int number);
}
这是一个名为MyFunctionInterface的函数接口,它有一个抽象方法doSomething,接收一个整数类型的参数并返回一个整数类型的结果。现在我们可以将这个函数接口用于Lamda表达式或方法引用中。
public class Main {
public static void main(String[] args) {
MyFunctionInterface func = (num) -> num * 2;
int result = func.doSomething(5);
System.out.println(result); // 输出10
}
}
这个例子中,我们使用Lamda表达式实现了MyFunctionInterface接口,并将其赋值给一个名为func的变量。我们将5作为参数传递给doSomething方法,最终输出乘2后的结果10。
除了MyFunctionInterface之外,Java中还有其他很多内置函数接口,比如:
- Predicate<T>:接收一个参数,返回一个boolean类型的结果。
- Consumer<T>:接收一个参数,不返回结果(消费掉了这个参数)。
- Supplier<T>:不接收参数,返回一个结果。
- UnaryOperator<T>:接收一个参数,返回同样类型的结果。
- BinaryOperator<T>:接收两个同样类型的参数,返回同样类型的结果。
这些内置的函数接口都有各自的示例和应用场景,在使用时应根据具体的需要来选择合适的函数接口。
总之,函数接口是Java 8中一个非常重要的特性,在函数式编程中起着重要的作用,可以让我们更加方便的编写代码,提高代码的可读性和可维护性。
