package com.yinbodotcc;
import java.io.*;public class CopyDog{ // Not to be confused with copycat public static void main(String[] args) { Dog newDog = (Dog) deepCopy(Dog.INSTANCE); System.out.println(newDog == Dog.INSTANCE); System.out.println(newDog); }// This method is very slow and generally a bad idea! static public Object deepCopy(Object obj) { try { ByteArrayOutputStream bos =new ByteArrayOutputStream(); new ObjectOutputStream(bos).writeObject(obj); ByteArrayInputStream bin =new ByteArrayInputStream(bos.toByteArray()); return new ObjectInputStream(bin).readObject(); } catch(Exception e) { throw new IllegalArgumentException(e); } }}
class Dog implements Serializable { public static final Dog INSTANCE = new Dog(); private Dog() {} public String toString() { return "Woof"; }
//如果没有下面的这个部分,则会打印为false,说明真的不是Singleton private Object readResolve() {
return INSTANCE; } }
