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");
}
}
分享到:
相关推荐
只有当类不包含显式构造器时,才会生成一个默认构造器,因此可以通过包含一个私有构造器来实现类的非实例化:public class UtilityClass {..
不可实例化的类使用静态工厂方法来提供方法的实现,如java.util.Collections类提供的不可修改、同步的集合等。不可变类使用静态工厂方法可以预先构建实例,避免重复创建等价对象。 5. 静态工厂方法与接口的结合 在...
通过私有构造器强化不可实例化的能力,可以防止工具类被实例化。 Builder 模式 Builder 模式是一种构建对象的方法,不直接生成想要的对象,而是利用必要参数调用构造器(或者静态工厂)得到一个 builder 对象,...
4. **强化不可实例化的能力**:对于工具类或只包含静态方法的类,通过使构造器私有,可以防止其被实例化。 5. **依赖注入**:优于硬编码资源连接,依赖注入可以提高代码的可测试性和灵活性。 6. **避免创建不必要的...
**通过私有构造器强化不可实例化的类**: - **工具类**:通常,工具类应包含私有构造器以防止被实例化。 - **副作用**:使用私有构造器的一个副作用是使得该类不能被继承。 **避免创建不必要的对象**: 1. **不可...
7. **使用私有构造器或枚举来禁止实例化**:对于工具类(只包含静态方法的类),应阻止外界实例化,可以使用私有构造器或枚举实现这一目标。 8. **利用接口隐藏实现细节**:通过定义接口并让实现类实现该接口,可以...
- Item4:如果一个类不应当被实例化,使用私有构造子并配合`final`关键字使其成为不可初始化的常量类。 2. **避免产生不必要的对象** - Item5:尽量重用对象,特别是对于不可变对象,如字符串,它们在常量池中会...
14. **使用私有构造器或final类来阻止实例化**:对于工具类或者单例模式,这样做可以防止外部非法实例化。 15. **避免非最终字段的同步**:非最终字段在多线程环境中可能导致数据不一致,应优先考虑使用原子变量或...
6. **构造器**:Item 1 "提供私有的构造器来创建不可实例化的类" 和 Item 2 "如果可能,应该使类及其字段不可变" 都涉及到类的设计和初始化策略。 7. **泛型**:Item 25 "尽可能地使用类型参数" 介绍了泛型在代码...
2. **构造器与工厂方法**:提倡使用私有构造器和静态工厂方法,以便于控制类的实例化过程,提高代码灵活性,例如实现不可变对象、延迟初始化等。 3. **接口与抽象类**:讨论了接口和抽象类在设计上的差异,强调接口...
2. **构造器**:推荐使用私有构造器或静态工厂方法来限制类的实例化,以实现不可变类或者控制对象的创建。此外,还强调了构造器不应抛出检查异常。 3. **枚举**:枚举在Java中不仅仅是常量集合,还可以包含方法,...
还有许多其他的知识点,如“利用equals()和hashCode()的一致性”、“重写clone()需谨慎”、“优先使用私有构造器或枚举来替代单例”等,都可以在源代码中找到实际应用的例子。 总之,《有效Java》第三版的源代码为...
《Effective Java》是Java开发领域的经典著作,由Joshua Bloch撰写,第二版更是程序员们不可或缺的参考书籍。这本书深入探讨了如何编写出高质量、高效、可维护的Java代码,涵盖了众多最佳实践和设计模式。这里我们将...
3. **构造器(Constructors)**:提倡使用私有构造器和工厂方法,以实现不可实例化类或者控制实例化过程。此外,还讨论了如何利用构造器初始化器来优化对象初始化。 4. **静态工厂方法(Static Factory Methods)**...
- 提供创建对象的接口,让子类决定实例化哪一个类。 - **观察者模式**: - 当对象状态改变时通知依赖的对象。 - **适配器模式**: - 将一个类的接口转换成客户希望的另一个接口。 - **装饰者模式**: - 在不改变现有...
11. **项11:用私有构造器或枚举类型强化单例属性** 单例模式应防止多线程环境下的并发创建,私有构造器和枚举类型是实现单例的推荐方式。 12. **项12:谨慎地覆盖equals()和hashCode()** 当重写equals()时,也应...
1. **构造器与工厂方法**:书中强调了如何正确使用构造器,包括私有构造器、工厂方法和静态工厂方法。静态工厂方法的优势在于它们可以有选择性地返回类的子类型实例,而无需暴露其实现细节。 2. **设计和实现equals...