美文网首页JavaWeb
Java8新特性-002-四大内置核心函数式接口

Java8新特性-002-四大内置核心函数式接口

作者: 53b3f4658edc | 来源:发表于2017-12-22 15:22 被阅读4次

    四大内置核心函数式接口

    函数式接口 参数类型 返回类型 用途
    Consumer 消费型接口 T void 对类型为T的对象应用操 作,包含方法: void accept(T t)
    Supplier 供给型接口 T 返回类型为T的对象,包 含方法:T get()
    Function 函数型接口 T R 对类型为T的对象应用操 作,并返回结果。结果 是R类型的对象。包含方 法:R apply(T t)
    Predicate 断定型接口 T boolean 确定类型为T的对象是否 满足某约束,并返回 boolean 值。包含方法 boolean test(T t)

    其他接口

    函数式接口 参数类型 返回类型 用途
    BiFunction<T, U, R> T, U R 对类型为 T, U 参数应用操作,返回 R 类型的结果。包含方法为R apply(T t, U u);
    UnaryOperator<T>(Function子接口) T T 对类型为T的对象进行一元运算,并返回T类型的结果。包含方法为T apply(T t);
    BinaryOperator<T>(BiFunction 子接口) T, T T 对类型为T的对象进行二元运算,并返回T类型的结果。包含方法为T apply(T t1, T t2);
    BiConsumer<T, U> T, U void 对类型为T, U 参数应用操作。包含方法为void accept(T t, U u)
    ToIntFunction<T> ToLongFunction<T> ToDoubleFunction<T> T int long double 分 别 计 算 int 、 long 、double、值的函数
    IntFunction<R> LongFunction<R> DoubleFunction<R> int long double R 参数分别为int、long、double 类型的函数

    测试代码

    TestFourFunc.java

    package java8.test;
    
    import java.util.function.Consumer;
    import java.util.function.Function;
    import java.util.function.Predicate;
    import java.util.function.Supplier;
    
    import org.junit.Test;
    
    public class TestFourFunc {
        
        /**
         * Java8中内置4大函数接口
         *      1.Consumer<T>:消费型接口
         *          方法:void accept(T t);
         *          功能:给一个参数,完成一项操作,没有返回值。有去无回
         *      2.Supplier<T>:供给型
         *          方法:T get();
         *          功能:根据泛型参数,返回一个值给调用者。无中生有
         *      3.Function(T,R):函数型接口;
         *          方法:R apply(T t);
         *          功能:根据参数T,返回一个类型R。
         *      4.Predicate<T>:断言型接口
         *          方法:boolean test(T t);
         *          功能:对输入参数T,进行判断操作,返回一个boolean值
         */
        
        /**
         * 1.消费型接口:Consumer
         * java.util.function Interface Consumer<T>:
         * 参数类型
         *      T - 操作输入的类型
         * Functional Interface:
         *      这是一个功能界面,因此可以用作lambda表达式或方法引用的赋值对象。
         */
        @Test
        public void testConsumer() {
            /*
             * void accept(T t)
             *      对给定的参数执行此操作。
             * 参数
             *      t - 输入参数
             */
            Consumer<String> con = (str) -> System.out.println("你好," + str);
            con.accept("消费型接口~");
        }
        
        /**
         * 2.生产型接口:Supplier
         * @FunctionalInterface 
         * public interface Supplier<T>
         * 代表结果供应商。
         * 没有要求每次调用供应商时都会返回新的或不同的结果。
         * 这是一个functional interface的功能方法是get() 。
         * 从以下版本开始:
         * 1.8
         */
        @Test
        public void testSupplier() {
            /*
             * T get()
             *      获得结果。
             */
            Supplier<String> sup = () -> "生产型接口~";
            String string = sup.get();
            System.out.println(string);
        }
        
        /**
         * Function<T,R>:函数型接口
         *  java.util.function
         * Interface Function<T,R>
         * 参数类型
         *      T - 函数输入的类型
         *      R - 函数的结果类型
         */
        @Test
        public void testFunction() {
            /**
             * R apply(T t)
             *      将此函数应用于给定的参数。
             * 参数
             *      t - 函数参数
             * 结果
             *      功能结果
             */
            Function<Integer,String> func = (str) -> str + ",函数性接口~";
            String apply = func.apply(5);
            System.out.println(apply);
        }
        
        /**
         * Predicate<T>:断言型接口
         *  java.util.function
         * Interface Predicate<T>
         * 参数类型
         *      T - T输入的类型
         * Functional Interface:
         *      这是一个FunctionInterface,因此可以用作lambda表达式或方法引用的赋值对象。
         */
        @Test
        public void testPredicate() {
            /**
             * boolean test(T t)
             * 在给定的参数上评估这个谓词。
             * 参数
             *      t - 输入参数
             * 结果
             *      true如果输入参数匹配谓词,否则为 false
             */
            Predicate<Integer> pre = (a) -> a > 0;
            boolean test = pre.test(10);
            System.out.println("10 > 0 : " + test);
        }
    }
    
    微信公众号:JavaWeb架构师

    其它

    • 源码下载
    关注下方公众号,回复:Java8.code
    
    完整教程PDF版本下载

    相关文章

      网友评论

        本文标题:Java8新特性-002-四大内置核心函数式接口

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