//一个实现了Serializable 的单例类,必须有一个readResolve 方法,用以返回它的唯一的实例。 //对一个实现了Serializable 的类进行了扩展,或者实现了一个扩展自Serializable 的接口, //使得我们在无意中实现了Serializable。 static class Dog extends Exception { public static final Dog INSTANCE = new Dog(); private Dog() {} public String toString() { return "Woof"; } //用于解决返回新实例的问题 private Object readResolve() { return INSTANCE; } } 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); } }
实现Serializable的单例类
猜你喜欢
转载自jaesonchen.iteye.com/blog/2297934
今日推荐
周排行