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

Java函数接口(JavaFunctionInterface)

发布时间:2023-06-16 09:02:27

在Java 8中,引入了一个新的概念——函数接口(Functional Interface),它是一个只有一个抽象方法的接口,可以被Lamda表达式或方法引用所映射。

Java中有许多内置函数接口,如:RunnableComparatorFunction等等,但我们也可以自己定义一个自己的函数接口。

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中一个非常重要的特性,在函数式编程中起着重要的作用,可以让我们更加方便的编写代码,提高代码的可读性和可维护性。