饿汉模式(静态代码块)
优缺点说明:
1) 这种方式和饿汉模式(静态常量)其实类似,只不过将类实例化的过程放在了静态代码块
中,也是在类装载的时候,就执行静态代码块中的代码,初始化类的实例。优
缺点参照饿汉模式(静态常量)。
2) 结论:这种单例模式可用,但是可能造成内存浪费
代码实现:
package com.it.singleton;
/*饿汉模式(静态代码块)*/
public class Singleton2 {
/*构造器私有化,外部不能new*/
private Singleton2(){ }
/*本类内部创建对象实例*/
private static Singleton2 instance;
static { //静态代码块中创建对象
instance = new Singleton2();
}
/*提供一个公有的静态方法,返回实例对象*/
public final static Singleton2 getInstance(){
return instance;
}
}
测试:
package com.it.singleton.test;
import com.it.singleton.Singleton2;
public class SingletonTest2 {
public static void main(String[] args) {
//测试
Singleton2 instance1 = Singleton2.getInstance();
Singleton2 instance2 = Singleton2.getInstance();
System.out.println(instance1 == instance2);//true 同一对象
System.out.println("hashcode= "+instance1.hashCode()+" "+instance2.hashCode());
}
}