方法一:
import java.io.ObjectStreamException;
import java.io.Serializable;
public class E1 implements Serializable {
private E1(){
//pervent from created object by reflect
if(INSTANCE !=null) throw new RuntimeException("duplicate instance!");
}
private final static E1 INSTANCE =new E1();
public static E1 getInstance(){
return INSTANCE;
}
public void print(){
System.out.println("singleton test");
}
// readResovle method to preserve singleton property
private Object readResolve() throws ObjectStreamException {
return INSTANCE;
}
public static void main(String []args){
E1 a =E1.getInstance();
E1 b =E1.getInstance();
System.out.print(a.equals(b)?true:false);
}
}
方法二(推荐):
public enum E2 {
INSTANCE;
public void print(){
System.out.println("singleton test");
}
public static void main(String []args){
E2 a=E2.INSTANCE;
E2 b=E2.INSTANCE;
System.out.print(a.equals(b)?true:false);
}
}