zoukankan      html  css  js  c++  java
  • 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

              

  • 相关阅读:
    linux创建www用户组和用户
    php+nginx改为socket
    laravel重写
    centos7精简版(minimal)killall: command not found
    php+nginx 整合
    php编译安装
    Nginx的编译安装
    sql 中常见的控制流语句
    sqlserver 中常见的函数 数学函数
    sqlserver 中常见的函数字符串函数
  • 原文地址:https://www.cnblogs.com/liyihua/p/12286073.html
Copyright © 2011-2022 走看看