java 接口函数_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 接口函数_Java函数式接口Supplier接口实例详解相关推荐
- java 静态 编译_Java中的动态和静态编译实例详解
Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...
- java 分割数据_java 分割csv数据的实例详解
java 分割csv数据的实例详解 实际需要解析的csv中很多都是从excel中转过来的,数据中本身包含了逗号的数据导致split的过程中发现数据对不上,因此,基于这种特性,重新写了一个csv数据的分 ...
- python装饰器函数-Python函数装饰器常见使用方法实例详解
本文实例讲述了Python函数装饰器常见使用方法.分享给大家供大家参考,具体如下: 一.装饰器 首先,我们要了解到什么是开放封闭式原则? 软件一旦上线后,对修改源代码是封闭的,对功能的扩张是开放的,所 ...
- 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 convert函数_Java 函数式编程和Lambda表达式
1.Java 8最重要的新特性 Lambda表达式.接口改进(默认方法)和批数据处理. 2.函数式编程 本质上来说,编程关注两个维度:数据和数据上的操作. 面向对象的编程泛型强调让操作围绕数据,这样可 ...
最新文章
- 2008R2Win7管理二十八Mail之基本使用
- 12306抢票脚本 python_如何使用Python实现12306抢票?摆脱无票可买的窘境
- butterKnife@BindView报错: If this view is optional add '@Nullable' annotation
- Intellij idea generate builder 插件-用于自动生成builder模式代码
- (七)JS基础知识四(搞定异步)【三座大山之三,必考!!!】
- Spring Bootstrap中带有配置元数据的高级配置
- String 属于基础的数据类型吗?
- python爬虫网页数据案例_python+vue实现网站爬虫数据分析案例
- ie对象不支持“jggrid“属性或方法_8.2 location 对象
- 赢了世界冠军不意外,和AI在DOTA中并肩作战才让人又纠结又兴奋
- MATLAB中subs函数
- 计算机无法识别 此硬盘,如果计算机无法识别硬盘驱动器,该怎么办?
- 用vue自己封装一个分页组件
- Java程序员编程学习之路资源合集
- 数字地图:互联网巨头们的下一个战场
- 八人抢答器讲解_八人抢答器
- URAL 1998 The old Padawan
- java:多态详解,以及对象的向上和向下转型
- linux手写数字识别,mnist手写数字识别与图片预处理
- IT忍者神龟之JMeter-使用Badboy录制Web测试脚本