java 鲜为人知的知识点_鲜为人知的Java 8功能:广义目标类型推断

java 鲜为人知的知识点

遍历Java 8的功能列表 , 广义目标类型推断使我震惊,因为它是一个特别有趣,鲜为人知的瑰宝。 看起来Java语言设计人员将减轻过去使用泛型(Java 5-7)时遇到的某些痛苦。 让我们看看他们的例子:

class List<E> {static <Z> List<Z> nil() {..}static <Z> List<Z> cons(Z head, List<Z> tail) {..}E head() {..}
}

给定以上示例,JEP 101功能声称能够编写以下代码会很好:

// This:
List.cons(42, List.nil());
String s = List.nil().head();// ... instead of this:
List.cons(42, List.<Integer>nil());
String s = List.<String>nil().head();

我自己是一名熟练的API设计师 ,我很高兴看到这样的改进正在发展中,尤其是后者。 这些变化有什么激动人心的? 让我更详细地评论一下:

// In addition to inferring generic types from
// assignments
List<String> l = List.nil();// ... it would be nice for the compiler to be able
// to infer types from method argument types
List.cons(42, List.nil());// ... or from "subsequent" method calls
String s = List.nil().head();

因此,在方法被链接的最后一个示例中,类型推断将被延迟,直到整个赋值表达式已被求值。 从分配的左侧,编译器可以推断<Z>绑定到head()调用上的String 。 然后可以再次使用此信息来推断<Z>nil()调用中再次绑定到String

对我来说,这听起来像是很麻烦的事情,因为需要延迟nil()调用的AST评估,直到评估“依赖”子AST为止。 这是一个好主意吗?

是的,这太棒了!

……你可能会想。 因为可以以更加流畅的样式来设计流畅的API,例如jOOQ或Streams API,所以将类型推断推迟到调用链的末尾。

因此,我下载了JDK 8的最新评估版,以使用以下程序对此进行测试:

public class InferenceTest {public static void main(String[] args) {List<String> ls = List.nil();List.cons(42, List.nil());String s = List.nil().head();}
}

我编译了这个,然后得到了:

C:\Users\Lukas\java8>javac InferenceTest.java
InferenceTest.java:5: error: incompatible types: Object cannot be converted to StringString s = List.nil().head();^
1 error

因此,实现了基于方法参数类型的类型推断(并因此进行了编译),但没有实现链式方法调用的类型推断。 我在互联网上搜索了一个解释,发现此Stack Overflow问题链接到lambda-dev邮件列表上的此有趣线程 。

看来Java类型系统已经变得相当复杂。 太复杂,无法实现这种疯狂的类型推断。 但是,仍然需要进行一些细微的改进,这在每天编写Java 8代码时将非常有价值。

也许在Java 9中,我们将像其他所有人一样获得valvar

参考: 鲜为人知的Java 8功能:来自我们的JCG合作伙伴 Lukas Eder在JAVA,SQL和JOOQ博客上的广义目标类型推断 。

翻译自: https://www.javacodegeeks.com/2013/11/a-lesser-known-java-8-feature-generalized-target-type-inference.html

java 鲜为人知的知识点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学200701 数字逻辑

《数字逻辑》作业 一、单项选择题 1&#xff0e; 八进制数的十六进制数是 。 A. B. C. D. 2&#xff0e; 用0&#xff0c;1两个符号对100个信息进行编码&#xff0c;则至少需要 。 A. 8位 B. 7位 C. 9位 D. 6位 3&#xff0e;逻辑函数 A. B. C. D. 4&#xff0e;逻辑函数的最小…

【渝粤题库】陕西师范大学201301 《经济法学》作业(高起本、专升本)

《经济法学》作业 一、名词解释 经济法律关系主体 消费者 经济职责 行政垄断 产品责任 经济法的地位 产品质量责任、 经济法律关系主体 经济职责 行政垄断 经济法律关系的客体 经营者 政府指导价 公平交易权 瑕疵 经济法 经济法律关系 消费者权利 不正当竞争 经济法责任 二、…

【渝粤题库】陕西师范大学201721 数学教育学 作业(专升本)

《数学教育学》作业 一&#xff0e;解词 1.认知结构&#xff1a;2.联结说 3.同化与顺应 4.非认知因素 5. 数学素质 二&#xff0e;填空&#xff1a; 1&#xff0e;数学教育学是研究 的一门专业化学科。 2&#xff0e;中学数学课程的改革势在必行&#xff0c;至少有以下几点原因…

探索适用于Apache Spark的Spline Data Tracker和可视化工具(第2部分)

在第1部分中&#xff0c;我们学习了如何使用以下方法测试数据沿袭信息收集 Spark外壳中的花键 。 在任何Scala或Java Spark应用程序中都可以这样做。 需要在您选择的构建工具&#xff08;Maven&#xff0c;Gradle或sbt&#xff09;中注册与Spark Shell相同的依赖项&#xff1a…

matlab 着色算法,colorization_matlab着色 - 源码下载|图形图象|图形图像处理(光照,映射..)|源代码 - 源码中国...

colorization_matlab着色colorization_matlab着色\READMEcolorization_matlab着色\README~colorization_matlab着色\cheapUI.mcolorization_matlab着色\colorize.mcolorization_matlab着色\colorizeFun.mcolorization_matlab着色\defs.hcolorization_matlab着色\example.bmpcol…

【渝粤题库】陕西师范大学202091公共管理学原理 作业(高起本、专升本)

《公共管理学原理》作业 一、名词解释 1&#xff0e;治理    &#xff12;&#xff0e;公共物品    &#xff13;&#xff0e;公共政策  4&#xff0e;公共部门人力资源开发 5&#xff0e;管理幅度 6 &#xff0e; 组织   7 &#xff0e;绩效管理   8 &#xff0e; 第三…

【渝粤题库】陕西师范大学202871 婚姻家庭法作业

《婚姻家庭法》作业 一、名词解释 1&#xff0e;婚姻 2&#xff0e;亲属 3&#xff0e;探望权 4&#xff0e;重婚 5&#xff0e;亲权 6&#xff0e;血亲7&#xff0e;行政离婚 8&#xff0e;事实婚姻 9&#xff0e;婚生子女 10&#xff0e;收养 二、填空题 1&#xff0e;家庭是…

matlab中inf函数,matlab中voronoin()函数的用法,求高手指点

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼x [ 0.5 0;0 0.5;-0.5 -0.5;-0.2 -0.1;-0.1 0.1;0.1 -0.1;0.1 0.1 ];voronoi(x(:,1),x(:,2))[v,c]voronoin(x)for i1:length(c)disp(c{i})end输出结果如下&#xff1a;v Inf Inf0.7000 -1.6500-0.0500 -0.0500-0.0500 -0.5250-1.4…

java编写正则表达式_如何用Java编写最快的表达式评估器之一

java编写正则表达式当然&#xff0c;标题有点吸引人&#xff0c;但确实如此&#xff08;您当然不相信自己没有伪造自己的基准&#xff0c;但这是另一回事了&#xff09;。 因此&#xff0c;上周我正在寻找一个小型且可用的库来评估数学表达式。 我几乎直接偶然发现了这个stack…

【渝粤题库】陕西师范大学210029 幼儿园游戏(学前儿童游戏)作业

《幼儿园游戏》作业 一、单选题 1、我国传统的游戏材料“七巧板”在国外称为&#xff08; &#xff09;。 2、原始人的游戏形式是高度融合的&#xff0c;主要表现为想象性游戏和&#xff08; &#xff09;两种游戏。 3、教育对幼儿具有&#xff08; &#xff09;的价值。 4、亲…

【渝粤题库】陕西师范大学292391 金融机构管理 作业(专升本)

一、单项选择题 1、“经理国库、充当最后贷款人”表示中央银行在行使( )职能。 A&#xff0e;调节职能 B&#xff0e;服务职能 C&#xff0e;管理职能 D&#xff0e;控制职能 2、我国国民经济核算新体系由( )组成。 A&#xff0e;资产负债表和资金流量表 B&#xff0e;国际收支…

matlab图像采集程序,用摄像头连续采集、保存图像源程序

写了一个在matlab2006上用摄像头连续采集、保存图像源程序。运行imaq_test.m文件后&#xff0c;弹出保存对话框&#xff0c;指定一个存盘目录&#xff0c;选定保存格式(如.jpg)&#xff0c;输入主文件名(如aqim)&#xff0c;点击开始采集按钮&#xff0c;将以设定的频率采集图像…

【渝粤题库】陕西师范大学400010 当代西方社会思潮评析 作业(专升本)

《当代西方社会思潮评析》作业 一、谈谈你对下列概念的理解 1、第三条道路 2、生态社会主义 3、后殖民主义 4、未来主义 5、新自由主义 6、新自由主义 7、后现代主义 8、女权社会主义 9、市场社会主义 10、分析的马克思主义 二、简要回答下列各题 1、“兰格模式”的主要内容与理…

Spring-Boot 2.1.x和主要的bean定义

我最近将应用程序从Spring Boot 1.5.X迁移到Spring Boot 2.X &#xff0c;发现覆盖Spring Bean定义存在问题。 其中一种配置是在Kotlin中遵循的&#xff1a; Configuration class DynamoConfig {Beanfun dynamoDbAsyncClient(dynamoProperties: DynamoProperties): DynamoDbAs…

【渝粤题库】陕西师范大学600011 结构化学作业(专升本)

《结构化学》作业 一.填空题 1.测不准关系的正确表达式是&#xff08;  &#xff09; 2.氢原子的波函数ψ可以写成径向部分Rnl与角度部分&#xff08;  &#xff09;的乘积。 3.在同核双原子分子中&#xff0c;两个2p轨道组合产生两个&#xff08;  &#xff09;轨道。 4…

php 5.5.7.tar.gz,编译 php-5.5.26.tar.gz

需要GD库大于2.1版本编译GD库请参考文章 安装GD库./configure --prefix/usr/local/php/ --with-config-file-path/usr/local/php/etc/ --with-libxml-dir/usr/local/libxml2/ --with-jpeg-dir/usr/local/jpeg/ --with-freetype-dir/usr/local/freetype/ --with-gd --with-mcry…

国家开放大学2021春1009离散数学(本)题目

教育 教育 试卷代号&#xff1a;1009 2021年春季学期期末统一考试 离散数学&#xff08;本&#xff09; 试题 2021年7月 一、单项选择题&#xff08;每小题4分&#xff0c;本题共20分&#xff09; 1.若集合A{1&#xff0c;2&#xff0c;3&#xff0c;4}&#xff0c;则下列表述…

国家开放大学2021春1107传感器与测试技术题目

教育 教育 试卷代号&#xff1a;1107 2021年春季学期期末统一考试 传感器与测试技术 试题 2021年7月 一、单项选择题&#xff08;12小题&#xff0c;每小题3分&#xff0c;共36分&#xff09; 1.电阻应变片的绝缘电阻是指已粘贴的应变片的&#xff08; &#xff09;间的电阻值…

php 有 stringbuffer,String、StringBuffer、StringBulider三者介绍

三者都实现了CharSequence接口&#xff0c;因此CharSequence可认为是一个字符串的协议接口1.String类是不可变类&#xff0c;即一旦一个String对象被创建后&#xff0c;包含在这个对象中的字符序列是不可改变的&#xff0c;直至这个对象被销毁&#xff1b;我们常常定义的时候 S…

【渝粤题库】广东开放大学 会展策划 形成性考核

选择题 题目&#xff1a;会展的&#xff08;&#xff09;是指企业和品牌利用展览会不断翻新花样&#xff0c;宣传自己品牌。 题目&#xff1a;目前世界上规模最大、影响力最广的综合展是&#xff08;&#xff09;。 题目&#xff1a;以下属于宣传类展览会的是&#xff08;&…