那些已经阅读了有效Java 第三版的人可能知道与该书相关的源代码可以在GitHub上获得 。 jbloch / efficiency-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(第三版)的源并将其更改为使用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第三版的源代码已更新为使用较新的功能相关推荐

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

    java第三阶段源代码 那些已经阅读了有效Java 第三版的人可能知道与该书相关的源代码可以在GitHub上获得 . jbloch / effective-java-3e-source-code项目拥 ...

  2. 有效期判断功能 java_有效的Java第三版有哪些新功能?

    有效期判断功能 java 自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容. 我假设将涵盖自Java 6以来引入Java的功能,的确如此. 但是,第三版Java开发人员经典版也 ...

  3. 有效的Java第三版有哪些新功能?

    自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容. 我假设将涵盖自Java 6以来引入Java的功能,的确如此. 但是,第三版Java开发人员经典版也有一些其他更改. 在本文中 ...

  4. Effective Java第三版有哪些新功能?

    自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容. 我假设将涵盖自Java 6以来引入Java的功能,的确如此. 但是,第三版Java开发人员经典版也有一些其他更改. 在本文中 ...

  5. chrome android 功能大全,Android版Chrome 55 大更新,多个新功能袭来

    原标题:Android版Chrome 55 大更新,多个新功能袭来 前几天,发布了桌面版Chrome 55 稳定版,而今日Android版Chrome 55 也正式到来,相比之间只是性能优化和BUG修 ...

  6. Java之父James Gosling鼎力推荐《Effective Java 第三版》最新中文版,Java程序员必看神书

    前言 Java之父James Gosling鼎力推荐.Jolt获奖作品全新升级,针对Java 7.8.9全面更新,Java程序员必备参考书.包含大量完整的示例代码和透彻的技术分析,通过90条经验法则, ...

  7. Effective C++ 中文版(第三版)读书笔记 更新ing~

    Effective C++ 中文版(第三版)持续更新ing 让自己习惯C++ 条款1 视c++为一个联邦 条款2 尽量以const,enum,inline替换#define 条款3 尽可能使用cons ...

  8. java递归方法建立搜索二叉树,具备查找关键字,插入新节点功能

    二叉排序树的定义: 二叉排序树满足以下三个性质(BST性质): <1>若它的左子树非空,则左子树上所有节点的值均小于根节点的值 <2>若它的右子树非空,则右子树上所有节点的值均 ...

  9. 微信windows版_微信悄悄更新,这个烦人的功能限制,终于被取消

    震惊!今天微信 Windows 测试版 2.7.0 更新,居然有惊喜功能. 以前机哥觉得,微信电脑版的体验,实在很一般呐,要扫码登录就算了,连聊天内容都不能显示完整.比如,八弟要分享一条搞笑微博给机哥 ...

最新文章

  1. owc_绘图区(PlotArea)背景显示多种颜色
  2. cmd与monkey测试
  3. JS实现App扫码网页端登录
  4. 信号传递的时机与顺序
  5. 三星s8清除html查看器,三星S8手机怎么双清 清理手机数据方法介绍 - Iefans
  6. 2014年世界互联网大会---马云篇
  7. php中empty(), is_null(), isset()函数区别
  8. 【西安活动】 | 4月20日「拥抱开源,又见.NET:云时代 • 新契机」
  9. find VS not looking for VS2015
  10. 14家文化机构联合抖音、今日头条启动“都来读书”计划
  11. Windows Servers2019没有无线网卡驱动
  12. RDD,DataFrame与DataSet区别
  13. 2007以学习软件设计开始
  14. Sql server 行列转换
  15. UE4特效系列笔记①
  16. 微信小程序累计独立访客(UV)不低于 1000 是什么意思
  17. HLS视频流 H265解码问题处理
  18. Win7_D旗舰版_201906 twm000出品
  19. android 对称加密完毕,通过 Android keystore 和 fingerprint 结合实现数据加密和解密
  20. 【数学】通俗解释布丰投针实验过程、蒙特卡洛方法及python仿真代码

热门文章

  1. 【2018.4.7】模拟赛之三-ssl2384 字符串【字符串】
  2. jozj3419-最大利润【树形dp】
  3. 图论复习——最小生成树MST
  4. P2522 HAOI2011 Problem b [莫比乌斯反演,数论分块]
  5. Oracle入门(十三A1)之替换变量,变量名,变量名
  6. 什么?java中居然可以执行js代码了?真是不知者不怪
  7. 新闻发布项目——实体类(User)
  8. React中的this指向问题
  9. 2020蓝桥杯省赛---java---B---4( 合并检测)
  10. 单片机中存储器扩展位地址线怎么算_51单片机存储器小结