java supplier接口_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了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接口实例详解相关推荐
- java 静态 编译_Java中的动态和静态编译实例详解
Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...
- java 分割数据_java 分割csv数据的实例详解
java 分割csv数据的实例详解 实际需要解析的csv中很多都是从excel中转过来的,数据中本身包含了逗号的数据导致split的过程中发现数据对不上,因此,基于这种特性,重新写了一个csv数据的分 ...
- java 获取用户的MAC地址多种方法实例详解
java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...
- java 获取oracle表结构_Java导出oracle表结构实例详解
Java导出oracle表结构实例详解 发布于 2020-7-20| 复制链接 摘记: Java导出oracle表结构实例详解最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. ...
- java打印菱形图案_java打印出菱形图案实例详解
第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由 ...
- mongodb java查询_java操作mongoDB查询的实例详解
java操作mongo查询的实例详解 前言: MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库 ...
- java中的装饰模式讲解,java 中设计模式(装饰设计模式)的实例详解
搜索热词 java 中设计模式(装饰设计模式)的实例详解 应用场景: 在不对原有对象类进行修改的基础上,给一个或多个已有的类对象提供增强额外的功能. 我觉得可以从字面理解,装饰,装饰房子.房子可以看成 ...
- java函数式编程_Java 函数式编程和 lambda 表达式详解
作者:DemonsI my.oschina.net/demons99/blog/2223079 为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要 ...
- java serializable用法_JAVA序列化Serializable及Externalizable区别详解
序列化简介 Java 的对象序列化将那些实现 Serializable 接口的对象转换成一个字节序列,并能在之后将这个字节序列完全恢复为原来的对象. 这就意味着 Java 对象在网络上的传输可以不依赖 ...
- Java指令全集_Java的JVM字节码指令集详解
本文详细介绍了如何使用javap查看java方法中的字节码.以及各种字节码的含义,并且配以完善的案例,一步步,从头到尾带领大家翻译javap的输出.在文末还附有JVM字节码指令集表. 本文不适合没有J ...
最新文章
- 实战:使用 Python 和 OpenCV 创建自己的“CamScanner”
- 取最后一个字符 oracle,oracle截取最后一个字符
- ad 原理图差分线_采用差分PulSAR ADC AD7982转换单端信号电路图
- windows 显示苹果分区_基准测试数据显示苹果M1运行Windows的表现比微软自家硬件好上近一倍...
- 自动生成三层结构代码(2)--生成实体类
- oracle启动监听_【DB笔试面试530】在Oracle中,有哪些重要后台进程?
- Unity游戏接入TypeSDK集成笔记
- 2016CCPC网选 1002:Zhu and 772002(求解矩阵秩)
- 社区活动 | Apache RocketMQ × Apache Flink Meetup · 上海站
- echart 地图 某个地区_使用echarts实现自定义区域地图
- 菲尼克斯电源模块QUINT-PS3AC24DC40的组装说明
- 大学生html5实训报告,大学生实训心得体会范文(精选5篇)
- ps中怎么导出tif_PS中图像常用的2种存储格式——TIFF/JPEG
- 荣耀修改WIFI服务器,数码教程资讯:荣耀路由2S怎么修改wifi的802.11n频宽
- poi给Word添加“下一页”
- iOS MP3流媒体播放 边缓冲边播放 FreeStreamer框架
- COLA 架构使用规范化
- Ajax传递数组对象
- 华硕vm510l拆电池图解_华硕vm510l的拆机教程详解 参数报价
- 经典好文!java实现在线编辑
热门文章
- java 每日一练——英雄怪兽文字攻击实例(每步都有解释)
- 淘宝/天猫获得淘宝店铺详情 API接口及 返回值说明
- python简单体育竞技模拟_2019-05-12 Python之模拟体育竞赛
- GD32F450,CAN1收发数据总结
- 模块加载失败请确保该二进制存储在指定路径中
- 包青天人声接电话搞笑版铃声 包青天人声接电话搞笑版手机铃声...
- 安装oracle需要多少内存,安装Oracle11g的内存要求至少1G的物理内存输入如下命令查看物理...
- 相对定位中整周模糊度确定方法
- $STRM 空投和 Strategy Stakers 代币分配
- 谷歌阻止苹果,谁来阻止谷歌