Java 函数式接口

在Java中,函数式接口(functional interface)是指仅包含一个抽象方法的接口。这种类型的接口通常用于表示简单的函数签名,并可与lambda表达式或方法引用结合使用,从而提供一种更简洁、更灵活的编程方式。

Java 8引入了函数式接口的概念,以及一个新的注解@FunctionalInterface。这个注解不是必须的,但它可以帮助开发者更清楚地表明接口的设计意图,并且可以让编译器检查是否符合函数式接口的定义(即只有一个抽象方法)。

下面是几个Java内置的函数式接口的例子:

  1. Runnable:无参数,无返回值。

    @FunctionalInterface
    public interface Runnable {
        void run();
    }
    
  2. Supplier<T>:无参数,返回一个T类型的结果。

    @FunctionalInterface
    public interface Supplier<T> {
        T get();
    }
    
  3. Consumer<T>:接收一个T类型的参数,无返回值。

    @FunctionalInterface
    public interface Consumer<T> {
        void accept(T t);
    }
    
  4. Function<T, R>:接收一个T类型的参数,返回一个R类型的结果。

    @FunctionalInterface
    public interface Function<T, R> {
        R apply(T t);
    }
    
  5. Predicate<T>:接收一个T类型的参数,返回一个boolean结果。

    @FunctionalInterface
    public interface Predicate<T> {
        boolean test(T t);
    }
    

函数式接口可以通过lambda表达式、方法引用或匿名类来实现。例如,使用Predicate<T>函数式接口和lambda表达式来检查一个数字是否大于5可以写成:

Predicate<Integer> isGreaterThan5 = x -> x > 5;

以上代码创建了一个Predicate<Integer>类型的变量isGreaterThan5,它可以被用来测试一个整数是否大于5。

函数式接口是Java中实现函数式编程风格的关键部分,它们使得将函数作为一等公民(first-class citizens)成为可能,从而允许将代码块作为数据传递。这种方式在进行事件处理、异步操作以及集合库的流操作时尤为有用。

posted @ 2023-12-04 17:03  Kllin  阅读(55)  评论(0编辑  收藏  举报