java suppliers_java8的Supplier
TOC
java8的Supplier
java.util.function.Supplier
定义
supplier也是是用来创建对象的,但是不同于传统的创建对象语法:new,每次调用get()方法时都会调用构造方法创建一个新对象。
public class TestSupplier {
private int age;
TestSupplier(){
System.out.println(age);
}
public static void main(String[] args) {
//创建Supplier容器,声明为TestSupplier类型,此时并不会调用对象的构造方法,即不会创建对象
Supplier sup= TestSupplier::new;
System.out.println("--------");
//调用get()方法,此时会调用对象的构造方法,即获得到真正对象
sup.get();
//每次get都会调用构造方法,即获取的对象不同
sup.get();
}
}
输出结果:
--------
0
0
源码
@FunctionalInterface
public interface Supplier {
/**
* Gets a result.
*
* @return a result
*/
T get();
}
案例
类似多例调用
@Bean
public Supplier hbaseConnSupplier() {
return () -> {
User user = new User((int) (Math.random() * 1000));
System.out.println("调用了hbaseConnSupplier,User:id:" + user.getId());
return user;
};
}
controller调用
@Autowired
private Supplier hbaseConnSupplier;
@RequestMapping("/test2")
public void test2(){
User user = hbaseConnSupplier.get();
System.out.println("test2:user:id:"+ user.getId());
System.out.println("test2:user:id2:"+ user.getId());
user=hbaseConnSupplier.get();
System.out.println("test2:user:id3:"+ user.getId());
System.out.println("----------------------");
}
输出
调用了hbaseConnSupplier,User:id:286
test2:user:id:286
test2:user:id2:286
调用了hbaseConnSupplier,User:id:13
test2:user:id3:13
----------------------
每次调用get方法都获取一个新的User
java suppliers_java8的Supplier相关推荐
- Java中的Supplier接口
在Stream流操作里经常看到. 带有@FunctionInterface注解,支持函数式接口,可以使用Lambda表达式,方法引用来使用. 通过泛型传入某一个类型,get()方法就会返回该类型 ...
- Java 8 - 03 Lambda 函数式接口Predicate Consumer Function Supplier
文章目录 Pre Predicate 断言型函数式接口 Consumer 消费型函数式接口 Function 功能型函数式接口 Supplier 供给型函数式接口 小结 函数式接口如何处理异常信息 P ...
- java 接口函数_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...
- java supplier接口_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...
- 【Java 8 新特性】Java Supplier示例
Java Supplier是一个功能接口,代表结果的提供者. Supplier的功能方法是get(). 一个Supplier可以通过lambda表达式.方法引用或默认构造函数来实例化. Supplie ...
- java Supplier接口与示例
目录 一.supplier普通使用 示例代码1: 示例代码2: 二.supplier在工厂模式中使用 三. Supplier 扩展类 Java 8 中的 Supplier 是一个函数接口,无参数,返回 ...
- Java程序猿如何用Supplier来优化代码?
之前的文章<Supplier的作用及其使用>提到过Supplier,昨天后台有小伙伴问到有没有实际的案例.今天来分享一下实际项目的用法,以此提高代码的健壮性. log日志打印,大家都应该不 ...
- Java学习总结:25
内建函数式接口 对于可能出现的函数式接口的方法最多只有4类:有参数有返回值.有参数无返回值.无参数有返回值.判断真假. 为了简化开发者的定义以及实现操作的统一,Java提供了一个新的开发包:java. ...
- 面试官写了个双冒号::问我这是什么语法?Java中有这玩意?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来自:今日头条,作者:Java实用技术 链接:https: ...
最新文章
- 分式的二阶导数怎么求_高考数学导数大题如何抢分? 名师手把手教你! 高一高二也要看...
- 使用 SQL 语句从数据库一个表中随机获取一些数据
- ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
- K NEAREST NEIGHBOR 算法(knn)
- 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua
- java架构师_成为一名Java高级架构师究竟要学哪些东西??
- vsftpd安装问题汇总(持续更新。。)
- 百度云cdn设置州五年制大专_图说云原生:让云原生转型变得像种白菜一样简单...
- python交并补_python两个列表求交、并、差
- mysql中的删除语法错误_mysql – EXPLAIN中的SQL语法错误
- vue路由匹配实现包容性_成为多元化和包容性领导者的3个关键策略
- 谁能真正“撬动”微信?| 畅言
- GBK字库 ISO 10646 Unicode UTF8
- Word 2007 删除页眉横线
- vite + ts + eslint全局变量配置
- 华为手机坏了数据怎么导出_苹果手机的语音备忘录怎么导出来?
- 为什么我的程序中没有stdafx.h头文件?
- EPLAN新建项目图纸
- Spring Cloud 微服务学习与实践
- leetcode|剑指offter|面试题6:从尾到头打印链表