单例有很多中实现形式,枚举实现是一个比较好的选择,原因是简单且线程安全。
Singleton.class
public enum Singleton {
INSTANCE;
private int id;
private String name;
private Singleton() {
}
private Singleton(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void sayHello() {
System.out.println(" say hello to {" + " id : " + id + ",name : " + name + "}");
}
}
测试类:
public class TestSingletonEnum {
public static void main(String[] args) {
Singleton singleton1 = Singleton.INSTANCE;
singleton1.sayHello();
singleton1.setId(1);
singleton1.setName("singleton1");
Singleton singleton2 = Singleton.INSTANCE;
singleton2.sayHello();
singleton2.setId(2);
singleton2.setName("singleton2");
singleton1.sayHello();
singleton2.sayHello();
System.out.println(singleton1 == singleton2);
}
}