`
12616383
  • 浏览: 51254 次
  • 性别: Icon_minigender_1
  • 来自: 待定
社区版块
存档分类
最新评论

我的 effective java -- 4.通过私有构造器强化不可实例化的能力

 
阅读更多

4.通过私有化构造器强化不可实例化的能力

 

当编写的工具类只包换静态方法和静态域,并且不希望被实例化,因为实例对它没有任何意义。可以通过构造私有化构造器来避免类被实例化。

 

注:

1 企图将类做成抽象类来强制该类不可被实例化,这是行不通的。该类可以被子类化,并且该子类也可以被实例化。

2 必须使用私有构造器,不能使用显性构造器或者不包含构造器。(当类不包含显性构造器时,编译器会生成缺省的构造器)

3 使用私有化构造器的类不能被子类化。

 

 

public class PrivateConstructor {
	
	private static void outpritName(String name){
		 System.out.println(name);
	}
	
	private PrivateConstructor(){
		//抛出异常,防止被调用或者实例
		throw new AssertionError();
	}
	
	public static void main(String[] args) {
		
		//此处会抛出异常,阻止程序继续进行
		PrivateConstructor  p = new PrivateConstructor();
		p.outpritName("111");
		
		//直接调用静态方法
		PrivateConstructor .outpritName("111");
	}
}
 

 


 

 

 

分享到:
评论

相关推荐

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

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

    effective-java.pdf

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

    《Effective Java》读书分享.pptx

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

    Effective Java第三版1

    4. **强化不可实例化的能力**:对于工具类或只包含静态方法的类,通过使构造器私有,可以防止其被实例化。 5. **依赖注入**:优于硬编码资源连接,依赖注入可以提高代码的可测试性和灵活性。 6. **避免创建不必要的...

    Effective-Java读书笔记(上)

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

    Effective-Java读书笔记

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

    effective java 读书笔记

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

    Effective.Java3rd.zip

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

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

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

    effectiveJava的笔记

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

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

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

    Effective-java-3e-source-code:有效Java第三版的源代码,并进行了必要的补充以使其可运行

    还有许多其他的知识点,如“利用equals()和hashCode()的一致性”、“重写clone()需谨慎”、“优先使用私有构造器或枚举来替代单例”等,都可以在源代码中找到实际应用的例子。 总之,《有效Java》第三版的源代码为...

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

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

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

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

    大唐JAVA笔试题

    - 提供创建对象的接口,让子类决定实例化哪一个类。 - **观察者模式**: - 当对象状态改变时通知依赖的对象。 - **适配器模式**: - 将一个类的接口转换成客户希望的另一个接口。 - **装饰者模式**: - 在不改变现有...

    Effecctive java 中文版

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

    EFFECT JAVA 中文

    1. **构造器与工厂方法**:书中强调了如何正确使用构造器,包括私有构造器、工厂方法和静态工厂方法。静态工厂方法的优势在于它们可以有选择性地返回类的子类型实例,而无需暴露其实现细节。 2. **设计和实现equals...

Global site tag (gtag.js) - Google Analytics