zoukankan      html  css  js  c++  java
  • Java 8 Funciton、Consumer、Predicate的作用及用法

    一、简述

    Funciton、Consumer、Predicate是Java8中的新特性。他们都是函数式接口,位于java.util包中。

    关于函数式接口,其外部特征是类上使用@FunctionalInterface注解。它有以下特点:

    • 只能注解到有且仅有一个抽象方法的类上。
    • 接口显示声明或覆盖了java.lang.Object类中方法的方法也不算做抽象方法。
    • Java8接口中static方法与default方法不算抽象方法。

    他们各自的使用场景如下:

    • Function

    需要执行目标方法后得到返回值。

    接口修饰:

    @FunctionalInterface
    public interface Function<T, R>{}
    

    该类需要设置两个泛型,T为入参类型,R为返回值类型。

    主要方法:

        /**
         * Applies this function to the given argument.
         *
         * @param t the function argument
         * @return the function result
         */
        R apply(T t);
    
    • Consumer

    仅需要执行目标方法,不需要得到返回值。

    接口修饰:

    @FunctionalInterface
    public interface Consumer<T>{}
    

    该类需要设置一个泛型,T为参数类型。

    主要方法:

        /**
         * 对给定的参数执行此操作。
         *
         * @param t 入参
         */
        void accept(T t);
    
    • Predicate

    经过比较,得到比较逻辑执行过后的结果,其返回类型为true、false。

    接口修饰:

    @FunctionalInterface
    public interface Predicate<T>{}
    

    该类需要设置一个泛型,T为参数类型。

    主要方法:

        /**
         * 根据给定参数比较
         *
         * @param t 入参
         * @return {@code true} 满足条件返回true,
         * otherwise {@code false}
         */
        boolean test(T t);
    

    二、实例

    1、输入数字3,得到输入值加100的结果并转为字符创,并返回。

    # 定义函数执行方法
    Function<Integer, String> func = o -> {return String.valueOf((o + 100));};
    # 传入3,执行方法,获取返回结果
    String result = func.apply(3);
    System.out.println("result : " + result);
    

    结果:

    2、输入字符“hello”,拼接字符串“ word”并输出。

    Consumer<String> consumer = o -> {System.out.println(o + " world");};
    consumer.accept("hello");
    

    结果:

    3、输入字符串“hello”,判断长度是否等于5。

    Predicate<String> predicate = o -> {return o.length() == 5;};
    boolean test = predicate.test("hello");
    System.out.println("result : " + test);
    

    结果:

  • 相关阅读:
    File类 文件过滤器
    LinkedList类的基本方法的用法
    Execption异常 手动和自动抛除异常
    Xshell连接Linux慢问题解决办法
    Liunx网络技术管理及进程管理
    Liunx中三种网络模式配置及Xshell连接
    LInux命令英文全称
    Liunx中fstab文件详解
    20190411RAID磁盘阵列及CentOS7系统启动流程
    20190410Linux中磁盘管理及LVM(week2day1)
  • 原文地址:https://www.cnblogs.com/yl-space/p/13716897.html
Copyright © 2011-2022 走看看