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

有效期判断功能 java

自从听说即将出版有效Java 第三版以来,我一直想知道其中有什么新内容。 我假设将涵盖自Java 6以来引入Java的功能,的确如此。 但是,第三版Java开发人员经典版也有一些其他更改。 在本文中,我提供了有关在第三版中添加,更改或删除的主题的高级概述。

在列出我所观察到的有效Java第三版中的新内容之前,我需要做出免责声明,说我很可能会错过本书中的几处更改,共有12章,涵盖90个项目,涵盖350页以上。 这篇文章的目的不是要详细介绍第三版中的更改,而只是作为这些更改的高级示例,鼓励读者借阅或购买此有效Java第三版的副本来访问本书。低级细节。

不出所料, Effective Java第三版中有大量新内容,涉及Java 7Java 8甚至Java 9的新功能。

Java 7

Java 7激发的一个显而易见的新项目是Item 9 (“ 首选try-with-resources而不是try-finally ”),因为Java 7引入了try-with-resources第32项 (“ 明智地组合泛型和可变参数 ”)是第三版的新增内容,并讨论了Java 7引入的 @SafeVarargs批注(该批注对Java 9进行了一些增强 )。

第8项 (“ 避免使用终结器和清理器 ”)已更新,以讨论如何使用Java 7引入的AutoCloseable接口在某些最常用的用法中替换终结器和清理器。 项目49 (“ 有效性检查参数 ”)已更新为引用Java 7引入的Objects.requireNonNull方法。

项目80(“ 首选执行人,任务和线程流 “)已经‘流’,因为有效的Java第二版加入到它的标题,包括讨论关于加叉/加入执行人框架在Java 7中第59项 (“ 了解和使用库 ”)讨论了Java 7引入ThreadLocalRandom

项目56 (“ 为所有公开的API元素编写文档注释 ”)讨论了使用JDK 7添加到javadoc命令行的-Xdoclint开关。

Java 8

项目21 (“ 后代设计接口 ”)涵盖了与在Java接口中使用默认方法有关的最佳实践。 整个第7章 (“ Lambda和流 ”),正如其标题所描述的,与Java 8引入的lambda和流有关,由关于这些功能编程概念的七个项目( 项目42项目48 )组成。 项目55 (“ 明智地返回可选参数 ”)讨论了Java 8引入的Optional的正确使用。

第1项 (“ 考虑使用静态工厂方法而不是构造函数 ”)在第三版中不是一个新项目,但现在讨论Java 8中支持并在Java 9中增强的接口中的静态方法。 第19项 (“ 用于以下内容的设计和文档”继承还是禁止继承 ”), 也不是新鲜事物,但现在提到了Javadoc @implSpec标记 ,该标记 “已在Java 8中添加并在Java 9中大量使用”。 毫不奇怪, 第56项 (“ 为所有公开的API元素编写文档注释 ”)还讨论了@implSpec用法。

第50项 (“ 在需要时制作防御性副本 ”)没有太多关注(日期和时间不是该项的重点),但是引用了Java 8中使用Instant而不是Date的内容。

Java 9

有效的Java的第三版提供了比我预期的更少的有关模块化Java平台模块系统 )的指导,这可以说是我们许多人与Java 9关联的第一件事。 项目15 (“ 最小化类和成员的可访问性 ”)讨论“作为模块系统的一部分引入的两个附加的隐式访问级别。”

在第二版中,第8项 (“ 避免使用终结剂和清洁剂 ”)的标题仅为“避免使用终结 ”。 在该项目的标题上添加“和清洁器”,表明Java 9 不推荐使用finalizer (由于我非常熟悉的原因),而将其替换为Cleaner类

项目56 (“ 为所有公开的API元素编写文档注释 ”)讨论了Java 9引入的Javadoc标签{@index}第59项 (“ 了解和使用库 ”)讨论了在Java 9中为什么重要的是知道标准库中的可用内容时使用Java 9添加到InputStream的方法transferTo(OutputStream)

第6项 (“ 避免创建不必要的对象 ”)提到了Java 9中对Boolean构造函数的弃用,该构造函数接受单个String参数作为对该项目中要点的说明。 顺便说一句,Java 9中也不建议使用其他唯一的布尔构造函数[ Boolean(boolean) ]。

第三版的有效Java解决了Java 9对接口中的static方法( 第1项 )和Optional第55项 )的改进。 第19项还引用了Java 9对@implSpec的大量使用。 这三个项目中的每一个都在本文前面的“ Java 8”部分中进行了突出显示。

版本无关的新通用Java项目

有效Java第三版中 ,有一些新项目与第二版中所涵盖的新版本缺少与较新版本Java的明显联系。 其中包括项目5 (“ 首选依赖注入优先于硬连接资源 ”), 项目25 (“ 将源文件限制为单个顶级类 ”)和项目85 (“ 首选Java序列化的替代方案 ”)。 我在博客文章“ 将Google的协议缓冲区与Java结合使用 ”中写了更多关于Item 85(“ Java序列化的替代品”) 的内容

删除的项目和附录

有效Java第二版中的一项似乎已被完全删除。 第三版的有用“附录”标题为“第二版对应的项目”,它表示第二版的单页项目73 (“ 避免线程组 ”)已在第三版中“停用”。 本附录的结构也很容易识别,第二版的第21项(“使用功能对象代表策略”)在第三版中由第42项 (“ 首选lambda优先于匿名类 ”)代替。 顺便说一句,本书在任何版本中的错别字似乎都很少,但是在第三版中确实突出的错别字是附录中与第二版中的第69项和第三版中的第81项相关的行。版。

小文本更新

有效Java的第三版中,有几项进行了较小的文本更新,其中一些在更改中具有重要意义。 这些是最难调用的,但是我在这里提供一个示例。 在第二版,布洛赫在括号传球写道, StringBuffer的是“过时的主要”相比, StringBuilder的 ,但在第三个版本,这是更强烈的措辞,状态StringBuffer是的“过时的前身” StringBuilder 。 我完全同意案文的变更。

介绍

有效Java,第三版》的 11章涵盖了构成“ Java平台最佳实践”的90个项目。 但是,第1章(“简介”)很有价值,因为它将Java 7,Java 8和Java 9的“关键功能”与讨论这些关键功能的一个或多个项目以及介绍这些关键功能的Java版本相关联。 我希望我早些注意它,但是直到我大部分完成这篇文章之后,才在第1页上看到这个方便的表格。 该表将使我节省大量时间来确定涉及Java 7,Java 8和Java 9新功能的项目!

“简介”也值得一读,因为它列出了“本书中的大多数规则所源自的”一些基本原理”。 我喜欢Bloch在简介中明确指出的:“这本书不适合初学者:它假定您已经熟悉Java。” 在线上有无数的论坛和主题,人们要求为Java新手准备一本好书。 虽然我强烈建议有效的Java的各种版本的中级和高级Java开发人员,我一直认为,开始Java开发人员与学习Java,然后写了一本书最好应该来有效的Java时,他们知道核心概念和想知道如何尽可能清楚,简单地应用这些概念。

结论

这篇文章重点介绍了第三版中对有效Java的一些最重要的添加和更改。 但是,我只提到了Java 7,Java 8和Java 9的一些快速参考,并且无疑在摘要中错过了一些新的和更改的文本。 为了反映Java的较新版本而对项目进行的一些细微更改,这些引用旨在说明如何将Java新功能编织到乍看似乎不一定与Java的新版本相关的多个项目中。

有效的Java是我曾经购买过三本书的唯一一本书,但是多年来,我已经购买了每个版本的一本书,对此我并不感到抱歉。 有效的Java的第三版不仅涵盖Java 7,Java 8和Java 9的新功能,而且还添加了项目并更新了先前存在的项目,以反映Josh Bloch对使用Java编程语言的最佳实践的最新想法。

翻译自: https://www.javacodegeeks.com/2018/01/whats-new-effective-javas-third-edition.html

有效期判断功能 java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值