packagecom.citi.designpattern.singleton;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.io.Serializable;public class SingletonTest1 implementsSerializable{/****/
private static final long serialVersionUID = 1L;privateSingletonTest1(){
}private staticSingletonTest1 getInstance(){returnNested.instance;
}static classNested{private static SingletonTest1 instance = newSingletonTest1();
}public static void main(String[] args) throwsFileNotFoundException, IOException, ClassNotFoundException{//1. for not Serizable
/*SingletonTest1 instance1 = SingletonTest1.getInstance();
SingletonTest1 instance2 = SingletonTest1.getInstance();
System.out.println(instance1 == instance2);*/
//2. for Serizable
/*SingletonTest1 instance = SingletonTest1.getInstance();
File file = new File("ser.out");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(instance);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
SingletonTest1 oIstance = (SingletonTest1)ois.readObject();
ois.close();
System.out.println(oIstance == instance);*/
//3. overwrite writeObject and readObject//SingletonTest1 instance = SingletonTest1.getInstance();
File file= new File("ser.out");
ObjectOutputStream oos= new ObjectOutputStream(newFileOutputStream(file));newSingletonTest1().writeObject(oos);
oos.close();
ObjectInputStream ois= new ObjectInputStream(newFileInputStream(file));
System.out.println(new SingletonTest1().readObject(ois) ==SingletonTest1.getInstance());
ois.close();
}private void writeObject(ObjectOutputStream oos) throwsIOException {//oos.defaultWriteObject();
oos.writeObject(SingletonTest1.getInstance());
}private SingletonTest1 readObject(ObjectInputStream ois) throwsIOException,
ClassNotFoundException {//ois.defaultReadObject();
return(SingletonTest1)ois.readObject();
}
}