私有构造方法的用途介绍
* 使用私有构造方法实现单例
静态成员
public class privateMethod {
//使用私有构造方法实现单例
//静态成员
public static final privateMethod instance = new privateMethod();
private privateMethod() {
}
public void say() {
System.out.println("hello");
}
public static void main(String[] args) {
privateMethod method = privateMethod.instance;
method.say();
}
}
静态工厂
public class privateMethod2 {
//使用私有构造方法实现单例
public static final privateMethod2 instance = new privateMethod2();
private privateMethod2() {
}
public void say() {
System.out.println("hello");
}
//静态工厂方法
public static privateMethod2 getInstance(){
return instance;
}
public static void main(String[] args) {
privateMethod2 method = privateMethod2.instance;
method.say();
}
}
单元素的枚举类型
public enum privateMethod3 {
//单个元素的枚举类型
INSTANCE;
public void say() {
System.out.println("hello");
}
public static void main(String[] args) {
privateMethod3 method = privateMethod3.INSTANCE;
method.say();
}
}
保护不希望被实例化的类
这种习惯用法也有副作用,它使得一个类完全不能够子类化(因为子类中无法调用父类中的构造方法)。
public class privateMethod4 {
private privateMethod4() {
throw new AssertionError();
}
}