直接变成字符串 要在别的类里直接写上这个字符串就能反序列化这个类的

解决方案 »

  1.   

    按照你的意思 我建议用XStream这个类 在需要类上注解一下@XStreamAlias("类名的一个实例名称"),然后在使用的时候声明一下就可以序列化了
    XStream xs = new XStream(new DomDriver());
    xs.processAnnotations(类名.class);红色部分要保持一致!
      

  2.   

    用ByteArrayOutputStream序列化成byte[]后,用BASE64编码一下这个byte[]成为一个字符串,然后别人拿到这个字符串,用BASE64反编码一下成为byte[],然后反序列化成对象
      

  3.   


    List<String> myAL = new ArrayList<String>();
    myAL.add("aaaaaa! ");
    myAL.add("bbbb-0");
    System.out.println("我的ArrayList:" + myAL.get(0));
    // 序列化使用的输出流
    ObjectOutputStream OOS = null;
    // 序列化后数据流给ByteArrayOutputStream 来保存。
    // ByteArrayOutputStream 可转成字符串或字节数组
    ByteArrayOutputStream BAOS = new ByteArrayOutputStream();
    // ByteArrayInputStream 可接收一个字节数组 "byte[] "。供反序列化做参数
    ByteArrayInputStream BAIS = null;
    // 反序列化使用的输入流
    ObjectInputStream OIS = null;
    try {
    // byte[] myb= "s ";
    OOS = new ObjectOutputStream(BAOS);
    OOS.writeObject(myAL);
    byte[] abc = BAOS.toByteArray();
    System.out.println("abc:"+abc);
    String StrMySerializer = abc.toString();
    System.out.println("序列化:" + StrMySerializer);
    OOS.close();

    //反序列化
    byte[] ddd = StrMySerializer.getBytes();
    System.out.println("ddd:"+ddd);
    BAIS = new ByteArrayInputStream(abc);
    OIS = new ObjectInputStream(BAIS);
    ArrayList c = (ArrayList) (OIS.readObject());
    System.out.println("反序列化:" + c.get(0)+c.get(1));
    OIS.close();
    } catch (IOException e) {
    e.printStackTrace();
    } catch (Exception ex) {
    System.out.println("序列化时产生错误 ");
    }