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);
    

    结果:

  • 相关阅读:
    关于获取多个id的用法
    纯css打造凹进与突出效果
    ie8兼容半透明效果css
    常用函数积累
    ie兼容图片缩小后模糊失真(锯齿)问题
    图片放大_css3
    弹出层跳出原框架
    ifame_自适应高度
    POJ #2479
    SPOJ #752. Power it!
  • 原文地址:https://www.cnblogs.com/yl-space/p/13716897.html
Copyright © 2011-2022 走看看