zoukankan      html  css  js  c++  java
  • Java8函数式编程

    在Java8的 java.util.function中包含以下几个接口

    1、Function,先上源码

    /*
     * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
     * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
     */
    package java.util.function;
    
    import java.util.Objects;
    
    /**
     * Represents a function that accepts one argument and produces a result.
     *
     * <p>This is a <a href="package-summary.html">functional interface</a>
     * whose functional method is {@link #apply(Object)}.
     *
     * @param <T> the type of the input to the function
     * @param <R> the type of the result of the function
     *
     * @since 1.8
     */
    @FunctionalInterface
    public interface Function<T, R> {
    
        /**
         * 将Function对象应用到输入的参数上,然后返回计算结果
         *
         * @param t the function argument
         * @return the function result
         */
        R apply(T t);
    
        /**
         * 返回一个先执行当前函数对象apply方法再执行after函数对象apply方法的函数对像.
         *
         * @param <V> the type of input to the {@code before} function, and to the
         *           composed function
         * @param before the function to apply before this function is applied
         * @return a composed function that first applies the {@code before}
         * function and then applies this function
         * @throws NullPointerException if before is null
         *
         * @see #andThen(Function)
         */
        default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
            Objects.requireNonNull(before);
            return (V v) -> apply(before.apply(v));
        }
    
        /**
         * 返回一个先执行before函数对象apply方法再执行当前函数对象apply方法的函数对象  
         * @param <V> the type of output of the {@code after} function, and of the
         *           composed function
         * @param after the function to apply after this function is applied
         * @return a composed function that first applies this function and then
         * applies the {@code after} function
         * @throws NullPointerException if after is null
         *
         * @see #compose(Function)
         */
        default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
            Objects.requireNonNull(after);
            return (T t) -> after.apply(apply(t));
        }
    
        /**
         * 返回一个执行了apply()方法之后只会返回输入参数的函数对象.
         *
         * @param <T> the type of the input and output objects to the function
         * @return a function that always returns its input argument
         */
        static <T> Function<T, T> identity() {
            return t -> t;
        }
    }
  • 相关阅读:
    git查看历史提交修改了哪些文件
    修改docker0默认IP地址
    php-fpm开启慢日志
    docker-desktop for windows修改docker镜像文件存放位置
    composer更换镜像源
    zip命令分卷压缩
    php增强一个类通常有4中途径
    解决 WPS for Linux 提示“系统缺失字体”
    SpringMvc + Mybatis项目中 使用 Atomikos实现分布式事务
    Log4j 配置某个类中某个方法的输出日志到指定文件
  • 原文地址:https://www.cnblogs.com/ywqbj/p/6001214.html
Copyright © 2011-2022 走看看