当Singleton模式类实现Serializable

    技术2022-05-11  118

    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; } } 


    最新回复(0)