java第三阶段源代码_有效Java第三版的源代码已更新为使用较新的功能

java第三阶段源代码

那些已经阅读了有效Java 第三版的人可能知道与该书相关的源代码可以在GitHub上获得 。 jbloch / effective-java-3e-source-code项目拥有1700多个星星,截至撰写本文时,它已被分叉了近800次。 在有效Java的第三版中, Java的版本主要是JDK 8,涵盖了JDK 9(有关此第三版所涵盖内容的详细信息,请参阅我的早期文章 )。

有效Java第三版发布以来,JDK已添加了许多功能,并且以更快的6个月节奏发布了许多新版本。 鉴于此,我特别感兴趣的是在琥珀色专家邮件列表中看到RémiForax已将jbloch / effective-java-3e-source-code分叉到GitHub项目forax / effective-java-3e-source-code “已经获得了有效Java(第3版)的源,并将它们更改为使用var,切换表达式,记录和具有类型测试模式的instanceof。”

我喜欢从“ 有效Java” (第三版)中刷新示例以使用较新功能的想法:

  • 开发人员可以看到如何使用最近发布的功能来应用有效的Java实践。
  • 开发人员可以查看JDK 8/9版本与较新版本之间的差异,以了解新构造如何替换较旧的构造,从而更好地理解较新的构造。
  • 在决定在特定情况下使用新结构的特定更改是否真正有助于代码可读性时,查看某些更改很有用。

分叉的forax / effective-java-3e-source-code ( README.md )的主页上指出:“源代码已更新为使用自Java 9(第三版使用的版本)以来可用的新结构。” 然后,该页面提供了关于应用于源代码的新构造类型的项目符号,并提供了指向每个新构造相关的JDK增强建议(JEP)的链接。

撰写本文时, 提交275eef87e4661f7f1edc41f4730cecf7a1096a97是主要的关注事项。 它涵盖对113个文件的更改。 我将在此处指出一些具体的更改,以说明所应用的更改的类型(其中一些是应用甚至在JDK 9之前可用的首选构造):

  • NutritionFacts.java (第2章,第2项) 从类更改为记录 。
  • PickTwo.java (第5章,项目32)的更改演示了开关表达式 。
  • CaseInsenstiveString.java (第3章,第10项)的更改演示了类型测试模式对instanceof的应用。
  • WordList.java (第3章,第14项) 改为申请VAR为趁着变量声明局部类型推理 。 这些更改很多,但这是我喜欢的更改。 我不相信其他地方的某些更改(例如将int更改为var )是否有帮助。 InstrumentedSet的更改 (第4章第18项)更具吸引力。
  • 更改为RecursiveTypeBound.java (第5章,项目31)演示了在for循环中使用var
  • Copy.copy方法(第2章,第9项)已更改为接受Path实例而不是String实例,并更改为分别使用Files.newInputStream和Files.newOutputStream代替new FileInputStreamnew FileOutputStream

结论

能够查看与有效Java第三版相关的原始源代码的更改,以适应新的语言结构,这对于了解新结构及其与旧结构的关系或如何替换以及确定是否存在差异非常有用。在不同情况下是可取的。

翻译自: https://www.javacodegeeks.com/2020/02/source-code-for-effective-java-third-edition-updated-to-use-newer-features.html

java第三阶段源代码

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

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

相关文章

《线性代数及其应用》

【0】README 0.1)以下内容转自: http://blog.csdn.net/ljbkiss/article/details/7194719 【1】正文干货 1.1) 断断续续的终于把 《线性代数及其应用(Linear Algebra and Its Application) David C.Lay》 这本书看完了…

micrometer_具有InlfuxDB的Spring Boot和Micrometer第1部分:基础项目

micrometer对于那些关注此博客的人来说,难怪我会经常使用InfluxDB。 我喜欢这样一个事实,它是一个真正的单一用途的数据库(时间序列),具有许多功能,并且还带有企业支持。 Spring也是我选择的工具之一。 因…

如何在win7(xp)home version下安装 rose 32 bit

【0】README 0.1) 以下部分内容转自 http://blog.csdn.net/encienqi/article/details/5578725 【1】 干货开始 如果是家庭版(win7 or WindowsXPHomeEdition)请先按以下步骤修改部分文件后再安装: 1.1)安装Microsoft Orca工具 step1&#x…

接口 Closeable

java.io 接口 Closeable public interface Closeable Closeable 是可以关闭的数据源或目标。调用 close 方法可释放对象保存的资源(如打开文件)。 从以下版本开始:1.5方法摘要 void close() 关闭此流并释放与此流关联的所有系统资源。 方法详…

Linux下python包放在哪,在alpinlinux中使用apk安装的Python包

我想用apk在Alpine Linux中安装一些Python包。我用numpy作为下面的例子。文档文件FROM python:3-alpineRUN apk add --update py3-numpy我建立我的码头形象$ docker build -t python-numpy .Sending build context to Docker daemon 2.048kBStep 1/2 : FROM python:3-alpine---…

spring 消息传递机制_Spring再次涵盖了您:继续进行消费者驱动的消息传递合同测试...

spring 消息传递机制在上一篇文章中,我们已经开始讨论基于消息的通信中的消费者驱动的合同测试 。 在今天的帖子中,我们将在测试工具箱中包含另一个工具,但是在此之前,让我对显微镜下的系统进行快速回顾。 它有两项服务&#xff0…

接口 DataInput

java.io接口 DataInput 所有已知子接口:ImageInputStream, ImageOutputStream, ObjectInput所有已知实现类:DataInputStream, FileCacheImageInputStream, FileCacheImageOutputStream, FileImageInputStream, FileImageOutputStream, ImageInputStreamI…

java反射机制总结

【0】README 0.1)以下内容转自: http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html 0.2)for source code, please visit (1~14 source code : https://github.com/pacosonTang/core-java-volume/blob/master…

c语言系统时间的作用,C语言得到当前系统时间

void getTime(){//获取当前系统时间time_t tTime;//距离1900年1月1日的秒数char str[80];struct tm* stTim;//时间结构time(&tTime);stTim localtime(&tTime);strftime(str,sizeof(str),"%Y%m%d%T",stTim);//格式化时间printf(str);}格式化时间的格式%a 星期…

aws集群重启_使用自动伸缩组在AWS中运行安全数据库集群

aws集群重启当您必须在AWS上运行可扩展应用程序时,您的数据库也必须是可扩展的。 扩展无状态应用程序层更容易,在无状态应用程序层中,每个节点几乎都是一次性的-即使3节点集群中的一个节点发生故障,您也可以启动另一个节点&#x…

接口 DataOutput

java.io 接口 DataOutput 所有已知子接口: ImageOutputStream, ObjectOutput 所有已知实现类: DataOutputStream, FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream, ObjectOutputStream, Rand…

java流与文件——流

【0】README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件——流 的相关知识; 0.2) 输入流和输出流(InputStream 和 OutputStream传输单位是基于单字节): 0.2.1&#xff09…

c语言结构体定义字符串数组,C语言,结构体中字符串的声明(采用字符指针还是字符数组)...

结构体中,字符串选项是用字符数组表示好,还是用字符指针表示好?typedef struct person{char *name;int age;char sex[6];};该结构体中name用的是指针而不是数组,所以需要给字符串在堆上申请内存然后再赋值;…

java –cp ./:_成为Java流专家–第2部分:中级操作

java –cp ./:就像魔术棒一样,中间操作将一个Stream转换为另一个Stream。 这些操作可以无穷无尽的方式组合在一起,以可读有效的方式执行从简单到高度复杂的任务。 本文是五分之二,其中还有一个GitHub存储库,其中包含每个单元的说…

c语言编程代码对父母感恩,c语言中编程:每个做父母的都关心自己孩子成人后孩子的生高:...

c语言中编程:每个做父母的都关心自己孩子成人后孩子的生高:据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等.小孩成人后的身高与其父母的身高和自身的性别密切相关.设faHeight为其父身高,moHeight为其母…

Servlet之javaweb应用(二)

一、 使用 JavaEE 版的 Eclipse 开发动态的 WEB 工程(JavaWEB 项目) 1). 把开发选项切换到 JavaEE 2). 可以在 Window -> Show View 中找到 Package Explorer, 并把其拖拽到开发区的左边 3). 在 Servers 面板中新建 Tomcat 服务器. 一定要关联到 Tomcat 安装的根目录 4). 新…

java流与文件——文本输入输出

【0】README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件——文本输入输出 的相关知识; 0.2) 在保存数据时,可以选择是二进制还是文本格式; 在存储文本字符串时, 需要考虑字…

RandomAccessFile类解析

【0】README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件——RandomAccessFile类解析 的相关知识; 0.1) 本文 转自: http://blog.csdn.net/akon_vm/article/details/7429245 , for com…

Servlet之Tomcat配置与启动(一)

一、 部署并启动 tomcat 服务器 1). 解压 apache-tomcat-7.0.11.zip 到一个非中文目录下 2). 配置一个环境变量 java_home(指向 JDK 安装的根目录) 或 jre_home 3). 通过双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat, 启动服务器 4). 可以在浏览器中输入 localhost:8…

随机数生成器c语言,句子随机生成器-怎么用C语言生成随机数

为随机数生成器初始化一个种子值在易语言中使用什么命令名置随机数种子 ()‘调用格式: 〈无返回值〉 置随机数种子 (〔整数型 欲置入的种子数值〕) - 系统核心支持库->算术运算英文名称:randomize为随机数生成器初始化一个种子值,不同的种…