mirror of
https://github.com/sjsdfg/effective-java-3rd-chinese.git
synced 2025-01-01 07:50:33 +08:00
Update 04. 使用私有构造方法执行非实例化.md
This commit is contained in:
parent
4d7dd11551
commit
7cb6cd4389
@ -6,7 +6,7 @@
|
||||
|
||||
这样的实用类(utility classes)不是设计用来被实例化的:一个实例是没有意义的。然而,在没有显式构造方法的情况下,编译器提供了一个公共的、无参的默认构造方法。对于用户来说,该构造方法与其他构造方法没有什么区别。在已发布的 API 中经常看到无意识的被实例的类。
|
||||
|
||||
**试图通过创建抽象类来强制执行非实例化是行不通的。**该类可以被子类化,子类可以被实例化。此外,它误导用户认为该类是为继承而设计的 (条目 19)。不过,有一个简单的方法来确保非实例化。只有当类不包含显式构造方法时,才会生成一个默认构造方法,**因此可以通过包含一个私有构造方法来实现类的非实例化:**
|
||||
**试图通过创建抽象类来强制执行非实例化是行不通的。** 该类可以被子类化,子类可以被实例化。此外,它误导用户认为该类是为继承而设计的 (条目 19)。不过,有一个简单的方法来确保非实例化。只有当类不包含显式构造方法时,才会生成一个默认构造方法,**因此可以通过包含一个私有构造方法来实现类的非实例化:**
|
||||
|
||||
```Java
|
||||
// Noninstantiable utility class
|
||||
|
Loading…
Reference in New Issue
Block a user