美文网首页
关于函数式接口

关于函数式接口

作者: flyjar | 来源:发表于2022-08-25 08:53 被阅读0次

我们知道使用Lambda表达式的前提是需要有函数式接口,而Lambda表达式使用时不关心接口名,
抽象方法名。只关心抽象方法的参数列表和返回值类型。因此为了让我们使用Lambda表达式更加的方
法,在JDK中提供了大量常用的函数式接口

所谓函数式接口,其实就是为我们提供一个回调方法,我们将具体实现的内容通过函数式结果,传入到一个方法中。
所以函数式接口一般都具有固定的格式,比如只返回,或者只消费,或者有返回也有销毁 ,或者做断言。所以java给我们提供了一系列的默认函数式接口,我们可以去调用

/**
* 1、这个函数式接口,提供了一个又返回也有消费的方法
*/
@FunctionalInterface
interface UserService {

    Long getSum(Integer[] array);
}


public class test {

    public static void main(String[] args) {
         // 2、我们给了这个函数式接口方法的具体实现,并将这个方法以对象的形式传入给了另一个方法
        getData((nums)-> Arrays.asList(nums).stream().collect(Collectors.summarizingInt(Integer::intValue)).getSum());
    }

    public static void getData(UserService userService) {

        Integer[] nums = {1, 12,3, 1, 21, 23, 12, 312, 3};

        System.out.println(userService.getSum(nums))

    }

}

以下四种是java提供的基础函数式接口。
重点:

在java.util.function包下有很多的函数式接口
函数式接口只能有一个抽象方法,但是可以有多个default实现方法和多个静态方法

  • Supplier 提供者,只有返回
@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

  • Consumer 消费者 ,只消费
@FunctionalInterface
public interface Consumer<T> {

    /**
     * Performs this operation on the given argument.
     *
     * @param t the input argument
     */
    void accept(T t);
}
  • Function 有消费 ,也有返回
@FunctionalInterface
public interface Function<T, R> {
    /**
     * Applies this function to the given argument.
     *
     * @param t the function argument
     * @return the function result
     */
    R apply(T t);
}
  • Predicate 断言型,根据消费内容,返回boolean
@FunctionalInterface
public interface Predicate<T> {
    /**
     * Evaluates this predicate on the given argument.
     *
     * @param t the input argument
     * @return {@code true} if the input argument matches the predicate,
     * otherwise {@code false}
     */
    boolean test(T t);
}

相关文章

  • java基础-day23-函数式接口和Stream流

    函数式接口和Stream 1. 函数式接口 1.1 函数式接口概述 1.2 常用函数式接口 1.3 比较器函数式接...

  • 2020-07-04【函数式接口】

    函数式接口概述 函数式接口作为方法的参数 函数式接口作为方法的返回值 常见的函数式接口 Supplier接口 Co...

  • 12.函数式接口

    主要内容 自定义函数式接口 函数式编程 常用函数式接口 第一章 函数式接口 1.1 概念 函数式接口在Java中是...

  • 关于函数式接口

    我们知道使用Lambda表达式的前提是需要有函数式接口,而Lambda表达式使用时不关心接口名,抽象方法名。只关心...

  • 函数式接口

    函数式接口 一、函数式接口的定义   函数式接口:函数式接口中有且仅有一个抽象方法,这个抽象方法的意义在于表达某种...

  • 测验:函数式接口

    下面哪些接口是函数式接口? 答案:只有Adder是函数式接口。SmartAdder不是函数式接口,因为它定义了两个...

  • Java8系列:神奇的函数式接口

    01 函数式接口是什么? 有且只有一个抽象方法的接口被称为函数式接口,函数式接口适用于函数式编程的场景,Lambd...

  • 函数式接口和Lambda表达式深入理解

    0x00 函数式接口 前面讲了一下函数式接口,不过可能只是讲了个大概,大致讲了一下什么是函数式接口 函数式接口就是...

  • java8函数式接口

    一、函数式接口 1、函数式接口在java中是指:有且仅有一个抽象方法的接口,函数式接口,即适用于函数式编程场景的接...

  • Java 8 知多少

    一、函数式接口 函数式接口的定义: 函数式接口(Functional Interface)就是一个有且仅有一个抽象...

网友评论

      本文标题:关于函数式接口

      本文链接:https://www.haomeiwen.com/subject/alsogrtx.html