这篇文章主要介绍了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 supplier接口_Java函数式接口Supplier接口实例详解相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. java函数式编程_Java 函数式编程和 lambda 表达式详解

    作者:DemonsI my.oschina.net/demons99/blog/2223079 为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要 ...

  9. java serializable用法_JAVA序列化Serializable及Externalizable区别详解

    序列化简介 Java 的对象序列化将那些实现 Serializable 接口的对象转换成一个字节序列,并能在之后将这个字节序列完全恢复为原来的对象. 这就意味着 Java 对象在网络上的传输可以不依赖 ...

  10. Java指令全集_Java的JVM字节码指令集详解

    本文详细介绍了如何使用javap查看java方法中的字节码.以及各种字节码的含义,并且配以完善的案例,一步步,从头到尾带领大家翻译javap的输出.在文末还附有JVM字节码指令集表. 本文不适合没有J ...

最新文章

  1. 实战:使用 Python 和 OpenCV 创建自己的“CamScanner”
  2. 取最后一个字符 oracle,oracle截取最后一个字符
  3. ad 原理图差分线_采用差分PulSAR ADC AD7982转换单端信号电路图
  4. windows 显示苹果分区_基准测试数据显示苹果M1运行Windows的表现比微软自家硬件好上近一倍...
  5. 自动生成三层结构代码(2)--生成实体类
  6. oracle启动监听_【DB笔试面试530】在Oracle中,有哪些重要后台进程?
  7. Unity游戏接入TypeSDK集成笔记
  8. 2016CCPC网选 1002:Zhu and 772002(求解矩阵秩)
  9. 社区活动 | Apache RocketMQ × Apache Flink Meetup · 上海站
  10. echart 地图 某个地区_使用echarts实现自定义区域地图
  11. 菲尼克斯电源模块QUINT-PS3AC24DC40的组装说明
  12. 大学生html5实训报告,大学生实训心得体会范文(精选5篇)
  13. ps中怎么导出tif_PS中图像常用的2种存储格式——TIFF/JPEG
  14. 荣耀修改WIFI服务器,数码教程资讯:荣耀路由2S怎么修改wifi的802.11n频宽
  15. poi给Word添加“下一页”
  16. iOS MP3流媒体播放 边缓冲边播放 FreeStreamer框架
  17. COLA 架构使用规范化
  18. Ajax传递数组对象
  19. 华硕vm510l拆电池图解_华硕vm510l的拆机教程详解 参数报价
  20. 经典好文!java实现在线编辑

热门文章

  1. java 每日一练——英雄怪兽文字攻击实例(每步都有解释)
  2. 淘宝/天猫获得淘宝店铺详情 API接口及 返回值说明
  3. python简单体育竞技模拟_2019-05-12 Python之模拟体育竞赛
  4. GD32F450,CAN1收发数据总结
  5. 模块加载失败请确保该二进制存储在指定路径中
  6. 包青天人声接电话搞笑版铃声 包青天人声接电话搞笑版手机铃声...
  7. 安装oracle需要多少内存,安装Oracle11g的内存要求至少1G的物理内存输入如下命令查看物理...
  8. 相对定位中整周模糊度确定方法
  9. $STRM 空投和 Strategy Stakers 代币分配
  10. 谷歌阻止苹果,谁来阻止谷歌