`

Effective Java第四条:通过私有构造器强化不可实例化的能力

阅读更多

第四条:通过私有构造器强化不可实例化的能力

1, 对于一个全是静态方法和静态域的类来说,这个类可以是一个工具类。那么工具类是不希望被实例化的,实例化对他么有任何意义。然后我们如果不提供构造器,jvm会自己提供,那还是会被实例化,那么我们只要在类中提供一个私有的构造器就可以了。

2, 企图通过将类做成抽象类来强制该类不可被实例化,这个是行不通的。该类可以被子类实例化。

3, 在提供私有构造器的同时,希望做出注释说明,不强求是否throw new AssertionError()

4, 这种习惯用法也有副作用,他使一个类不能被子类化,所有的构造器都必须或者隐式的调用超类(superclass)构造器,这种情况下,子类就没有可访问的超类构造器可调用了。

分享到:
评论

相关推荐

    Effective Java第三版1

    4. **不可实例化**:使用私有构造器可以强化一个类只能通过特定方式(如静态方法)访问的特性。 5. **依赖注入**:推荐使用依赖注入而非硬编码依赖,以提高代码灵活性和测试性。 6. **避免不必要的对象创建**:对象...

    effective-java.pdf

    - 不可实例化:当类设计为工具类,不希望有实例存在时,可以使用私有构造器来防止外部实例化。 - 不可变值类:使用预先构建的实例或构造时缓存实例,确保不会创建重复对象。 4. 基于接口的框架:通过接口提供静态...

    《Effective Java》读书分享.pptx

    通过私有构造器强化不可实例化的能力,可以防止工具类被实例化。 Builder 模式 Builder 模式是一种构建对象的方法,不直接生成想要的对象,而是利用必要参数调用构造器(或者静态工厂)得到一个 builder 对象,...

    ihukaijun#effective-java-3rd-chinese#04. 使用私有构造方法执行非实例化1

    只有当类不包含显式构造器时,才会生成一个默认构造器,因此可以通过包含一个私有构造器来实现类的非实例化:public class UtilityClass {..

    Effective-Java读书笔记(上)

    **通过私有构造器强化不可实例化的类**: - **工具类**:通常,工具类应包含私有构造器以防止被实例化。 - **副作用**:使用私有构造器的一个副作用是使得该类不能被继承。 **避免创建不必要的对象**: 1. **不可...

    effective java 读书笔记

    - Item4:如果一个类不应当被实例化,使用私有构造子并配合`final`关键字使其成为不可初始化的常量类。 2. **避免产生不必要的对象** - Item5:尽量重用对象,特别是对于不可变对象,如字符串,它们在常量池中会...

    Effective-Java:Effective Java中文版第二版示例代码

    2. **构造器**:推荐使用私有构造器或静态工厂方法来限制类的实例化,以实现不可变类或者控制对象的创建。此外,还强调了构造器不应抛出检查异常。 3. **枚举**:枚举在Java中不仅仅是常量集合,还可以包含方法,...

    effectiveJava的笔记

    2. **构造器与工厂方法**:提倡使用私有构造器和静态工厂方法,以便于控制类的实例化过程,提高代码灵活性,例如实现不可变对象、延迟初始化等。 3. **接口与抽象类**:讨论了接口和抽象类在设计上的差异,强调接口...

    java优秀源码-Effective-Java-Concepts:Java源代码可以强化概念,我正在从JoshuaBloch的出色著作“Eff

    6. **构造器**:Item 1 "提供私有的构造器来创建不可实例化的类" 和 Item 2 "如果可能,应该使类及其字段不可变" 都涉及到类的设计和初始化策略。 7. **泛型**:Item 25 "尽可能地使用类型参数" 介绍了泛型在代码...

    Effective-Java读书笔记

    7. **使用私有构造器或枚举来禁止实例化**:对于工具类(只包含静态方法的类),应阻止外界实例化,可以使用私有构造器或枚举实现这一目标。 8. **利用接口隐藏实现细节**:通过定义接口并让实现类实现该接口,可以...

    Effective.Java3rd.zip

    14. **使用私有构造器或final类来阻止实例化**:对于工具类或者单例模式,这样做可以防止外部非法实例化。 15. **避免非最终字段的同步**:非最终字段在多线程环境中可能导致数据不一致,应优先考虑使用原子变量或...

    Effecctive java 中文版

    11. **项11:用私有构造器或枚举类型强化单例属性** 单例模式应防止多线程环境下的并发创建,私有构造器和枚举类型是实现单例的推荐方式。 12. **项12:谨慎地覆盖equals()和hashCode()** 当重写equals()时,也应...

    Effictive Java

    ##### Item3:通过私有构造器强制执行不可实例化 - **目的**:防止类被实例化,通常适用于工具类等不需要实例化的场景。 - **实现方式**: - 将构造器声明为私有,从而阻止外部直接创建实例。 ##### Item4:避免...

    java源码总结-Effective-Java-3E:有效Java第三版的源代码示例和摘要的回购

    3. **构造器(Constructors)**:提倡使用私有构造器和工厂方法,以实现不可实例化类或者控制实例化过程。此外,还讨论了如何利用构造器初始化器来优化对象初始化。 4. **静态工厂方法(Static Factory Methods)**...

    Java-Effective:Java Effective 2nd Edition书中的源代码

    《Effective Java》是Java开发领域的经典著作,由Joshua Bloch撰写,第二版更是程序员们不可或缺的参考书籍。这本书深入探讨了如何编写出高质量、高效、可维护的Java代码,涵盖了众多最佳实践和设计模式。这里我们将...

    机器学习资源整理002不全

    6. **项29:用私有构造器或枚举实现单例**:单例模式保证一个类只有一个实例,私有构造器和枚举都是实现这一模式的有效手段。 7. **项33:尽量减少类的可见性**:限制类和成员的访问权限可以提高封装性,降低耦合。...

Global site tag (gtag.js) - Google Analytics