这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

Supplier接口概述

// Supplier接口源码

@FunctionalInterface

public interface Supplier {

/**

* 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 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 integerSupplier) {

return integerSupplier.get();

}

}

控制台输出:

数组中的最大值为:500

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 接口函数_Java函数式接口Supplier接口实例详解相关推荐

  1. java 静态 编译_Java中的动态和静态编译实例详解

    Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...

  2. java 分割数据_java 分割csv数据的实例详解

    java 分割csv数据的实例详解 实际需要解析的csv中很多都是从excel中转过来的,数据中本身包含了逗号的数据导致split的过程中发现数据对不上,因此,基于这种特性,重新写了一个csv数据的分 ...

  3. python装饰器函数-Python函数装饰器常见使用方法实例详解

    本文实例讲述了Python函数装饰器常见使用方法.分享给大家供大家参考,具体如下: 一.装饰器 首先,我们要了解到什么是开放封闭式原则? 软件一旦上线后,对修改源代码是封闭的,对功能的扩张是开放的,所 ...

  4. java 获取用户的MAC地址多种方法实例详解

    java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...

  5. java 获取oracle表结构_Java导出oracle表结构实例详解

    Java导出oracle表结构实例详解 发布于 2020-7-20| 复制链接 摘记:  Java导出oracle表结构实例详解最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. ...

  6. java打印菱形图案_java打印出菱形图案实例详解

    第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由 ...

  7. mongodb java查询_java操作mongoDB查询的实例详解

    java操作mongo查询的实例详解 前言: MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库 ...

  8. java中的装饰模式讲解,java 中设计模式(装饰设计模式)的实例详解

    搜索热词 java 中设计模式(装饰设计模式)的实例详解 应用场景: 在不对原有对象类进行修改的基础上,给一个或多个已有的类对象提供增强额外的功能. 我觉得可以从字面理解,装饰,装饰房子.房子可以看成 ...

  9. java convert函数_Java 函数式编程和Lambda表达式

    1.Java 8最重要的新特性 Lambda表达式.接口改进(默认方法)和批数据处理. 2.函数式编程 本质上来说,编程关注两个维度:数据和数据上的操作. 面向对象的编程泛型强调让操作围绕数据,这样可 ...

最新文章

  1. 2008R2Win7管理二十八Mail之基本使用
  2. 12306抢票脚本 python_如何使用Python实现12306抢票?摆脱无票可买的窘境
  3. butterKnife@BindView报错: If this view is optional add '@Nullable' annotation
  4. Intellij idea generate builder 插件-用于自动生成builder模式代码
  5. (七)JS基础知识四(搞定异步)【三座大山之三,必考!!!】
  6. Spring Bootstrap中带有配置元数据的高级配置
  7. String 属于基础的数据类型吗?
  8. python爬虫网页数据案例_python+vue实现网站爬虫数据分析案例
  9. ie对象不支持“jggrid“属性或方法_8.2 location 对象
  10. 赢了世界冠军不意外,和AI在DOTA中并肩作战才让人又纠结又兴奋
  11. MATLAB中subs函数
  12. 计算机无法识别 此硬盘,如果计算机无法识别硬盘驱动器,该怎么办?
  13. 用vue自己封装一个分页组件
  14. Java程序员编程学习之路资源合集
  15. 数字地图:互联网巨头们的下一个战场
  16. 八人抢答器讲解_八人抢答器
  17. URAL 1998 The old Padawan
  18. java:多态详解,以及对象的向上和向下转型
  19. linux手写数字识别,mnist手写数字识别与图片预处理
  20. IT忍者神龟之JMeter-使用Badboy录制Web测试脚本

热门文章

  1. 微信联合登录全攻略,早期测试用户的详尽经验总结!
  2. 网络基础-第三章:认识网线制作工具
  3. 深度优先搜索——走迷宫问题
  4. 【ZCMU1919】kirito's 星爆气流斩(多重背包)
  5. MS Materials Studio 安装
  6. “地面哨兵”挑战赛圆满落下帷幕,最终结果揭晓
  7. #1992. 购票(ticket)
  8. 导纳控制 admittance control
  9. SangforAC(深信服)Web单点登录
  10. Python计算分位点与逆运算:根据给定的值,计算在序列中的分位水平