![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective java3学习
bulibuqiqin
这个作者很懒,什么都没留下…
展开
-
Effective Java3 Item1:考虑以静态工厂方法代替构造函数(内容及笔记)
相比构造方法静态工厂方法的优缺点以及命名规则翻译 2019-03-08 17:33:22 · 187 阅读 · 0 评论 -
Effective Java3 Item2:当构造函数有多个参数时,考虑使用构建器(内容及笔记)
在设计构造函数或静态工厂的类时,建造者模式是一个很好的选择,特别是当许多参数是可选的或具有相同类型时。与可伸缩构造函数相比,使用构建器客户端代码更容易读写,而且构建器比 JavaBean 更安全。静态工厂和构造函数都有一个局限:它们不能对大量可选参数做很好的扩展。以一个类为例,它表示包装食品上的营养标签。这些标签上有一些字段是必需的,如:净含量、毛重和每单位份量的卡路里,另有超过 20 个可...翻译 2019-03-15 16:27:40 · 152 阅读 · 0 评论 -
Effective Java3 Item3:使用私有构造函数或枚举类型执行单例属性(内容及笔记)
单例是一个仅实例化一次的类 。单例通常表示无状态对象,比如函数(Item 24)或系统组件,它们在本质上是唯一的。将一个类设计为单例会使它的客户端测试时变得困难, 除非它实现了作为其类型的接口,否则无法用模拟实现来代替单例。实现单例有两种常见的方法。两者都基于保持构造函数私有和导出公共静态成员以提供对唯一实例的访问。在第一种方法中,成员是一个 final 字段:// Singleton wi...翻译 2019-03-20 20:16:37 · 173 阅读 · 0 评论 -
Effective Java3 Item4:用私有构造函数实现不可实例化(内容及笔记)
有时你会想要写一个类,它只是一个静态方法和静态字段的组合。这样的类已经获得了坏名声,因为有些人滥用它们来避免从对象角度思考,但是它们确有用途。它们可以用java.lang.Math或 java.util.Arrays 的方式,用于与原始值或数组相关的方法。它们还可以用于对以 java.util.Collections 的方式实现某些接口的对象分组静态方法,包括工厂(Item 1)。(对于 Java...翻译 2019-03-20 20:20:23 · 153 阅读 · 0 评论 -
Effective Java3 Item5:依赖注入优于硬连接资源(内容及笔记)
将创建它们的资源或工厂传递给构造函数(或静态工厂或构建器)。这种操作称为依赖注入,它将大大增强类的灵活性、可重用性和可测试性。许多类依赖于一个或多个底层资源。例如,拼写检查程序依赖于字典。常见做法是,将这种类实现为静态实用工具类(Item 4):// Inappropriate use of static utility - inflexible & untestable!pub...翻译 2019-03-20 20:25:59 · 249 阅读 · 0 评论 -
Effective Java3 Item6:避免创建不必要的对象(内容及笔记)
重用单个对象通常是合适的,不必每次需要时都创建一个新的功能等效对象。重用可以更快、更时尚。如果对象是不可变的,那么它总是可以被重用的(Item 17)。作为一个不该做的极端例子,请考虑下面的语句:String s = new String("bikini"); // DON'T DO THIS!该语句每次执行时都会创建一个新的 String 实例,而这些对象创建都不是必需的。String ...翻译 2019-03-20 20:33:38 · 168 阅读 · 0 评论 -
Effective Java3 Item7:排除过时的对象引用(内容及笔记)
如果你从需要手动管理内存的语言(如 C 或 c++)切换到具有垃圾回收机制的语言(如 Java),当你使用完对象后,会感觉程序员工作轻松很多。当你第一次体验它的时候,它几乎就像魔术一样。这很容易让人觉得你不需要考虑内存管理,但这并不完全正确。考虑以下简单的堆栈实现:import java.util.Arrays;import java.util.EmptyStackException;/...翻译 2019-03-20 20:41:01 · 134 阅读 · 0 评论 -
Effective Java3 Item8:避免使用终结器(finalizers)和清除器(cleaners)(内容及笔记)
终结器是不可预测的,通常是危险的,也是不必要的。 它们的使用可能导致不稳定的行为、糟糕的性能和可移植性问题。终结器有一些有效的用途,我们将在后面的文章中介绍,但是作为规则,你应该避免使用它们。在 Java 9 中,终结器已经被弃用,但是 Java 库仍然在使用它们。Java 9 替代终结器的是清除器。清除器的危险比终结器小,但仍然不可预测、缓慢,而且通常是不必要的。c++ 程序员被告诫不要把终结...翻译 2019-03-20 20:53:35 · 310 阅读 · 0 评论