java lazy_在Java8中模拟Lazy
我编写了以下代码来模拟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相关推荐
- Java基础之Java8中Map的compute的使用
Java基础之Java8中Map的compute的使用 一.介绍 Java8更新后,Map接口中提供了compute方法.下面我们先看看官方文档的对它的使用说明. 如果看完上面的还是不太明白的话,看下 ...
- Java基础之Java8中map和flatMap的使用
Java基础之Java8中map和flatMap的使用 一.介绍 首先,看下map和flatMap的官方文档说明 map flatMap 其实单纯的看api说明还是比较抽象,下面我将以几个实战例子来帮 ...
- java 8 lamda,Java8中你可能不知道的一些地方之Lambda表达式实战
Java8 引入 Lambda 表达式,允许开发者将函数当成参数传递给某个方法,或者把代码本身当作数据进行处理.使用 Lambda 表达式,使得应用变得简洁而紧凑. 很多语言(Groovy.Scala ...
- java zoneoffset,java - 如何在java8中获取默认的ZoneOffset? - SO中文参考 - www.soinside.com...
tl;dr OffsetDateTime.now().getOffset() 但您可能应该使用时区而不是仅仅偏离UTC. ZoneId.systemDefault() Offset versus Ti ...
- JAVA8数组相并_【Java笔记】Java8中数组(引用类型)、String、List、Set之间的相互转换问题...
数组.String.List.Set之间的相互转换问题 如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 本博主要是相理清楚一些转换的逻辑,顺便总结一下贴出来.这里是把 ...
- Function接口 – Java8中java.util.function包下的函数式接口
作者: Mohamed Sanaulla 译者: 李璟(jlee381344197@gmail.com) 早先我写了一篇<函数式接口>,探讨了Java8中函数式接口的用法.如果你正在 ...
- 提高Java表达能力!不落伍一起掌握Java8中Lambda表达式、函数式接口及方法构造器数组引用
文章目录 函数式接口概述 函数式接口示例 内置函数式接口 Lambda简述 Lambda语法 方法引用 构造器引用 数组引用 函数式接口概述 只包含一个抽象方法的接口,称为函数式接口. 可以通过 La ...
- java8中使用java.util.Base64报“java.lang.IllegalArgumentException: Illegal base64 character d”
概述 Base64是一种字符串编码格式,采用了A-Z,a-z,0-9,"+"和"/"这64个字符来编码原始字符(还有垫字符"=").一个字符 ...
- java 模拟多线程并发_Java中模拟同时并发请求
有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了. java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求, ...
- Java中模拟浏览器访问网页(三)
Java中模拟浏览器访问网页(三) 转载:https://blog.csdn.net/qq122627018/article/details/51473150 一.前言 看完上一节中浏览器访问网页的行 ...
最新文章
- 在tomcat下创建和发布WEB应用
- 解决Linux 无法使用userdel 删除用户和组的问题
- Spring入门介绍:
- jQuery formValidator表单验证插件4.1.0 下载 演示 文档 可换肤 代码生成器
- 日语+AI语音黑科技,早道开启小语种AI智能时代!
- response 设置头的类型 (转)
- Web前后端缓存技术(缓存的主要作用是什么)
- 【更改google chrome浏览器路径的方法】
- 技术开发团队如何高效率开会 [会议管理]
- 分享 | CADD之分子动力学的简介(上篇)
- 证明威尔逊(Wilson)定理及其逆定理
- 谭浩强-习题6.10
- 鼠标滚动导航放大缩小
- 基于555定时器的LED电子骰子设计
- C语言学习之选择结构程序设计总结
- Insight.Numerics.inFlux.v1.0通风和气体扩散CFD软件
- 02 事务伴生源-Propagation
- camstar portal 7全屏显示
- 国内工业互联网领域开源社区资源汇总
- C语言程序的翻译过程
热门文章
- Pytorch聊天机器人
- python整数反转
- number of lines annotated by git is not equal to number of linus in the file .check file encoding an
- 【前端】在Vue2中使用Vanta.js炫酷动态背景(全屏背景)
- 粗糙集 rough set theory
- git将master分支develop的操作
- rpmbuild php,linux RPM打包时出错,求助!!!
- Cannot find current proxy: Set ‘exposeProxy‘ property on Advised to ‘true‘ to make it available
- Cascading Style Sheet层叠样式表
- 股票市场交易中的强化学习