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相关推荐

  1. Java中的Supplier接口

     在Stream流操作里经常看到.  带有@FunctionInterface注解,支持函数式接口,可以使用Lambda表达式,方法引用来使用.  通过泛型传入某一个类型,get()方法就会返回该类型 ...

  2. Java 8 - 03 Lambda 函数式接口Predicate Consumer Function Supplier

    文章目录 Pre Predicate 断言型函数式接口 Consumer 消费型函数式接口 Function 功能型函数式接口 Supplier 供给型函数式接口 小结 函数式接口如何处理异常信息 P ...

  3. java 接口函数_Java函数式接口Supplier接口实例详解

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

  4. java supplier接口_Java函数式接口Supplier接口实例详解

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

  5. 【Java 8 新特性】Java Supplier示例

    Java Supplier是一个功能接口,代表结果的提供者. Supplier的功能方法是get(). 一个Supplier可以通过lambda表达式.方法引用或默认构造函数来实例化. Supplie ...

  6. java Supplier接口与示例

    目录 一.supplier普通使用 示例代码1: 示例代码2: 二.supplier在工厂模式中使用 三. Supplier 扩展类 Java 8 中的 Supplier 是一个函数接口,无参数,返回 ...

  7. Java程序猿如何用Supplier来优化代码?

    之前的文章<Supplier的作用及其使用>提到过Supplier,昨天后台有小伙伴问到有没有实际的案例.今天来分享一下实际项目的用法,以此提高代码的健壮性. log日志打印,大家都应该不 ...

  8. Java学习总结:25

    内建函数式接口 对于可能出现的函数式接口的方法最多只有4类:有参数有返回值.有参数无返回值.无参数有返回值.判断真假. 为了简化开发者的定义以及实现操作的统一,Java提供了一个新的开发包:java. ...

  9. 面试官写了个双冒号::问我这是什么语法?Java中有这玩意?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来自:今日头条,作者:Java实用技术 链接:https: ...

最新文章

  1. 分式的二阶导数怎么求_高考数学导数大题如何抢分? 名师手把手教你! 高一高二也要看...
  2. 使用 SQL 语句从数据库一个表中随机获取一些数据
  3. ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
  4. K NEAREST NEIGHBOR 算法(knn)
  5. 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua
  6. java架构师_成为一名Java高级架构师究竟要学哪些东西??
  7. vsftpd安装问题汇总(持续更新。。)
  8. 百度云cdn设置州五年制大专_图说云原生:让云原生转型变得像种白菜一样简单...
  9. python交并补_python两个列表求交、并、差
  10. mysql中的删除语法错误_mysql – EXPLAIN中的SQL语法错误
  11. vue路由匹配实现包容性_成为多元化和包容性领导者的3个关键策略
  12. 谁能真正“撬动”微信?| 畅言
  13. GBK字库 ISO 10646 Unicode UTF8
  14. Word 2007 删除页眉横线
  15. vite + ts + eslint全局变量配置
  16. 华为手机坏了数据怎么导出_苹果手机的语音备忘录怎么导出来?
  17. 为什么我的程序中没有stdafx.h头文件?
  18. EPLAN新建项目图纸
  19. Spring Cloud 微服务学习与实践
  20. leetcode|剑指offter|面试题6:从尾到头打印链表

热门文章

  1. CSS3制作3D水晶糖果按钮
  2. 字符数组的初始化与赋值
  3. canvas转盘转动?
  4. HTML、CSS、JS对unicode字符的不同处理
  5. 6.QT-简易计算器实现(详解)
  6. (四)Maven构建多模块项目
  7. jsp中头的导入两种方式区别
  8. JAVA语法基础作业——动手动脑以及课后实验性问题(一)
  9. repo + gerrit
  10. 分析 tuning-primer.sh 源码