• Java 常用函数式接口 —— Supplier接口


    JDK提供了大量常用的函数式接口以丰富Lambda的典型使用场景,它们主要在 java.util.function 包中被提供。 下面是最简单的Supplier接口及使用示例。

    Supplier接口概述

    // Supplier接口源码
    
    
    @FunctionalInterface
    public interface Supplier<T> {
    
        /**
         * Gets a result.
         *
         * @return a result
         */
        T get();
    }

    java.util.function.Supplier<T> 接口仅包含一个无参的方法: T get() 。用来获取一个泛型参数指定类型的对象数据。由于这是一个函数式接口,这也就意味着对应的Lambda表达式需要“对外提供”一个符合泛型类型的对象数据。如:

    import java.util.function.Supplier;
    
    public class Demo01Supplier {
        public static void main(String[] args) {
            String msgA = "Hello ";
            String msgB = "World ";
            System.out.println(
                    getString(
                            () -> msgA + msgB
                    )
            );
        }
    
        private static String getString(Supplier<String> stringSupplier) {
            return stringSupplier.get();
        }
    }

    控制台输出:

    Hello World 

    练习:求数组元素最大值

    使用 Supplier 接口作为方法参数类型,通过Lambda表达式求出int数组中的最大值。接口的泛型使用 java.lang.Integer 类。

    import java.util.function.Supplier;
    
    public class DemoNumberMax {
        public static void main(String[] args) {
            int[] numbers = {100, 200, 300, 400, 500, -600, -700, -800, -900, -1000};
            int numberMax = arrayMax(
                    () -> {
                        int max = numbers[0];
                        for (int number : numbers) {
                            if (max < number) {
                                max = number;
                            }
                        }
                        return max;
                    }
            );
            System.out.println("数组中的最大值为:" + numberMax);
        }
    
        /**
         * 获取一个泛型参数指定类型的对象数据
         * @param integerSupplier 方法的参数为Supplier,泛型使用Integer
         * @return 指定类型的对象数据
         */
        public static Integer arrayMax(Supplier<Integer> integerSupplier) {
            return integerSupplier.get();
        }
    }

    控制台输出:

    数组中的最大值为:500

              

  • 相关阅读:
    php工作笔记5-css定位
    php工作笔记4-mysql笔记1
    php工作笔记3-php基础加强
    php工作笔记2-php编码效率
    php工作笔记1-数组常用方法总结,二维数组的去重,上传图片到oss服务器
    android浏览器 源码共享
    违章查询源码分享
    CENTOS 6.5 配置YUM安装NGINX
    Linux下安装Oracle11g服务器
    ARCGIS SDE空间化处理
  • 原文地址:https://www.cnblogs.com/liyihua/p/12286073.html
Copyright © 2020-2023  润新知