zoukankan      html  css  js  c++  java
  • Java8 学习笔记--函数式接口

    通过之前的函数式接口与lambda表达式的关系那篇文章,大家应该对函数式接口有了一定的了解了,在Java中它是lambda表达式的基础,没有函数式接口就没有办法使用lambda表达式。

    函数式接口如此重要,所以Java8 API给我们提供了除了以前就有的Comparator接口和Runnable接口外,还提供了很多全新的函数式接口使用。下面介绍几个这些接口:

    Predicate<T>接口

    这个接口顾名思义,是一个用来判断的接口,其中的唯一抽象方法为:boolean test(T t);,其接受T类型一个参数,返回一个boolean值,我们可以用来对这个参数进行一系列自己定义的判断方法并返回结果。举例:

    Predicate<String> predicate = a -> a.indexOf("java") != -1;  // 用来判断是否含有「java」字符串
    boolean test1 = predicate.test("java");  // true
    boolean test2 = predicate.test("jva");  // false

    Predicate接口的其他默认方法还有:

    Predicate<T> and(Predicate<? super T> other)  //
    Predicate<T> negate()  // 取反
    Predicate<T> or(Predicate<? super T> other)  //

    Function<T, R>接口

    这个接口用来表示一个函数,接收一个类型的参数,返回一个类型结果。其唯一的抽象方法为:R apply(T t);,用来接收一个T类型的参数,返回一个R类型的值。例子如下:

    Function<String, Integer> function = a -> Integer.valueOf(a); // 可以简写为 = Integer::valueOf
    Integer apply = function.apply("0123");  // 结果为:123

    Function接口的其他默认方法还有:

    Function<V, R> compose(Function<? super V, ? extends T> before) // 先执行参数中的函数,后执行自身的
    Function<T, V> andThen(Function<? super R, ? extends V> after) // 先执行自身的,后执行参数中的函数

    Supplier<T>接口

    Supplier接口产生一个给定类型的结果,并且没有输入参数。唯一的抽象方法为:T get();,使用例子如下:

    Supplier<Person> supplier = () -> {
        return new Person();
    }; // 可以简写为 supplise = Person::new;
    Person person = supplier.get();

    Consumer<T>接口

    这个接口表示对于一个输入参数进行运算,与Function接口的不同是,它没有返回结果。其唯一的抽象方法为:void accept(T t);,使用例子如下:

    Consumer<int[]> consumer = n -> {
        for (int i = 0; i < n.length; i++) {
            System.out.println(n[i]);
        }
    };
    int[] nums = {1, 2, 3, 4, 5};
    consumer.accept(nums); // 依次在每行输出一个数字

    对于函数式接口暂时就介绍到这里,在java8 API中还有许多这样的接口,大家可以自己探索使用。

     

  • 相关阅读:
    mssql sqlserver 从指定字符串中获取数字的方法
    SpringBoot整合junit
    SpringBoot之RESTful风格
    SpringBoot属性配置
    SpringBoot 基于web应用开发(请求参数获取,静态资源,webjars)
    Spring Boot入门及第一个案例
    解决Zabbix网页端Get value error: cannot connect to [[192.168.238.139]:10050]: [113] No route to host问题
    Linux配置本地yum源
    ELK安装redis 执行make命令时报错解决方法
    CentOS 7 配置网络连接
  • 原文地址:https://www.cnblogs.com/zawier/p/6758547.html
Copyright © 2011-2022 走看看