-
从Java 8版本开始,接口中不能包含静态方法的限制成为历史,因此一般没有任何理由给接口提供一个不可实例化的伴生类,已经被放在这种类中的许多公有的静态成员,应该被放到接口中去。但是要注意,仍然有必要将这些静态方法背后的大部分实现代码,单独放进一个包级私有的类中 这是因为在 Java 中仍要求接口的所有静态成员都必须是公有的 Java 中允许接口有私有的静态方法,但是静态域和静态成员类仍然需要是公有的。
-
单元素枚举类型通常是实现单例的最佳方法。 注意,如果你的单例必须扩展一个超类而不是 Enum(尽管你可以声明一个 Enum 来实现接口),你就不能使用这种方法。
-
通过私有构造器强化不可实例化的能力。这个习惯用法也防止了类被子类化,这是一个副作用。所有子类构造函数都必须调用超类构造函数,无论是显式的还是隐式的,但这种情况下子类都没有可访问的超类构造函数可调用。
-
Java 枚举类型背后的基本思想很简单:它们是通过 public static final 修饰的字段为每个枚举常量导出一个实例的类。枚举类型实际上是 final 类型,因为没有可访问的构造函数。客户端既不能创建枚举类型的实例,也不能扩展它,所以除了声明的枚举常量之外,不能有任何实例。换句话说,枚举类型是实例受控的类(参阅第 6 页,Item-1)。它们是单例(Item-3)的推广应用,单例本质上是单元素的枚举。
effective java读书笔记
于 2023-12-19 17:51:37 首次发布