我编写了以下代码来模拟Lazy< T>在Java中:

import java.util.function.Supplier;

public class Main {

@FunctionalInterface

interface Lazy extends Supplier {

Supplier init();

public default T get() { return init().get(); }

}

static Supplier lazily(Lazy lazy) { return lazy; }

static Supplier value(T value) { return ()->value; }

private static Lazy thing = lazily(()->thing=value(new Thing()));

public static void main(String[] args) {

System.out.println("One");

Thing t = thing.get();

System.out.println("Three");

}

static class Thing{ Thing(){System.out.println("Two");}}

}

但我得到以下警告:

“value (T) in Main cannot be applied to (com.company.Main.Thing)

reason: no instance(s) of type variable(s) T exist so that Supplier

conforms to Lazy“

你能帮我找出问题所在吗?

提前致谢!

解决方法:

Lazy是供应商的子类,您正试图将其转换为其他类型.

更改

private static Lazy thing = lazily(() -> thing = value(new Thing()));

private static Supplier thing = lazily(() -> thing = value(new Thing()));

应该管用.

标签:java,lambda,java-8,evaluation,lazy-evaluation

来源: https://codeday.me/bug/20190522/1153560.html

java lazy_在Java8中模拟Lazy相关推荐

  1. Java基础之Java8中Map的compute的使用

    Java基础之Java8中Map的compute的使用 一.介绍 Java8更新后,Map接口中提供了compute方法.下面我们先看看官方文档的对它的使用说明. 如果看完上面的还是不太明白的话,看下 ...

  2. Java基础之Java8中map和flatMap的使用

    Java基础之Java8中map和flatMap的使用 一.介绍 首先,看下map和flatMap的官方文档说明 map flatMap 其实单纯的看api说明还是比较抽象,下面我将以几个实战例子来帮 ...

  3. java 8 lamda,Java8中你可能不知道的一些地方之Lambda表达式实战

    Java8 引入 Lambda 表达式,允许开发者将函数当成参数传递给某个方法,或者把代码本身当作数据进行处理.使用 Lambda 表达式,使得应用变得简洁而紧凑. 很多语言(Groovy.Scala ...

  4. java zoneoffset,java - 如何在java8中获取默认的ZoneOffset? - SO中文参考 - www.soinside.com...

    tl;dr OffsetDateTime.now().getOffset() 但您可能应该使用时区而不是仅仅偏离UTC. ZoneId.systemDefault() Offset versus Ti ...

  5. JAVA8数组相并_【Java笔记】Java8中数组(引用类型)、String、List、Set之间的相互转换问题...

    数组.String.List.Set之间的相互转换问题 如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 本博主要是相理清楚一些转换的逻辑,顺便总结一下贴出来.这里是把 ...

  6. Function接口 – Java8中java.util.function包下的函数式接口

    作者:   Mohamed Sanaulla  译者: 李璟(jlee381344197@gmail.com) 早先我写了一篇<函数式接口>,探讨了Java8中函数式接口的用法.如果你正在 ...

  7. 提高Java表达能力!不落伍一起掌握Java8中Lambda表达式、函数式接口及方法构造器数组引用

    文章目录 函数式接口概述 函数式接口示例 内置函数式接口 Lambda简述 Lambda语法 方法引用 构造器引用 数组引用 函数式接口概述 只包含一个抽象方法的接口,称为函数式接口. 可以通过 La ...

  8. java8中使用java.util.Base64报“java.lang.IllegalArgumentException: Illegal base64 character d”

    概述 Base64是一种字符串编码格式,采用了A-Z,a-z,0-9,"+"和"/"这64个字符来编码原始字符(还有垫字符"=").一个字符 ...

  9. java 模拟多线程并发_Java中模拟同时并发请求

    有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了. java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求, ...

  10. Java中模拟浏览器访问网页(三)

    Java中模拟浏览器访问网页(三) 转载:https://blog.csdn.net/qq122627018/article/details/51473150 一.前言 看完上一节中浏览器访问网页的行 ...

最新文章

  1. 在tomcat下创建和发布WEB应用
  2. 解决Linux 无法使用userdel 删除用户和组的问题
  3. Spring入门介绍:
  4. jQuery formValidator表单验证插件4.1.0 下载 演示 文档 可换肤 代码生成器
  5. 日语+AI语音黑科技,早道开启小语种AI智能时代!
  6. response 设置头的类型 (转)
  7. Web前后端缓存技术(缓存的主要作用是什么)
  8. 【更改google chrome浏览器路径的方法】
  9. 技术开发团队如何高效率开会 [会议管理]
  10. 分享 | CADD之分子动力学的简介(上篇)
  11. 证明威尔逊(Wilson)定理及其逆定理
  12. 谭浩强-习题6.10
  13. 鼠标滚动导航放大缩小
  14. 基于555定时器的LED电子骰子设计
  15. C语言学习之选择结构程序设计总结
  16. Insight.Numerics.inFlux.v1.0通风和气体扩散CFD软件
  17. 02 事务伴生源-Propagation
  18. camstar portal 7全屏显示
  19. 国内工业互联网领域开源社区资源汇总
  20. C语言程序的翻译过程

热门文章

  1. Pytorch聊天机器人
  2. python整数反转
  3. number of lines annotated by git is not equal to number of linus in the file .check file encoding an
  4. 【前端】在Vue2中使用Vanta.js炫酷动态背景(全屏背景)
  5. 粗糙集 rough set theory
  6. git将master分支develop的操作
  7. rpmbuild php,linux RPM打包时出错,求助!!!
  8. Cannot find current proxy: Set ‘exposeProxy‘ property on Advised to ‘true‘ to make it available
  9. Cascading Style Sheet层叠样式表
  10. 股票市场交易中的强化学习