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


    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 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
    https://www.cnblogs.com/liyihua/p/12286073.html
  • 相关阅读:
    nodejs学习笔记
    php操作mysql数据库
    HTML5 新特性总结
    万恶的浏览器兼容问题
    图标字体使用方法
    托管代码
    进程间通信,把字符串指针作为参数通过SendMessage传递给另一个进程,不起作用
    利用自定义消息处理函数的WPARAM或LPARAM参数传递指针
    自定义消息中如果需要定义WPARAM和LPARAM,该怎么使用和分配?
    提高VS2010运行速度的技巧+关闭拼写检查
  • 原文地址:https://www.cnblogs.com/sunny3158/p/16127922.html
Copyright © 2020-2023  润新知