吴旭晓个人博客 繁体中文 简体中文

首页| 日志 |JAVA |ASP |PHP |Android |IOS |ASP.NET |JavaScript |DIV+CSS |SEO |taobaoke |饼哥语录
繁体中文 简体中文

java Enum序列化问题

  背景:项目中,服务器端使用JAVA开发,客户端用C#开发,客户端和服务器端通过WEBSERVICE连接,但在使用Enum(枚举)时,服务器端正确接收到信息,在信息序列化到文件时,Enum的值总是不能正确的序列化。后经多方参考,才知道要指定类型:

 


  XMLEncoder encoder;
  try {
  encoder = new XMLEncoder(
  new BufferedOutputStream(
  new FileOutputStream(Config.instance().getModuleFile(filename))));
  //此处代码可以让Enum顺利的序列化,反序列化的时候不存在这个问题
  encoder.setPersistenceDelegate( DBTYPE.class, new EnumPersistenceDelegate() );
  encoder.setPersistenceDelegate( WEBCTRL.class, new EnumPersistenceDelegate() );
  encoder.setPersistenceDelegate( METHOD.class, new EnumPersistenceDelegate() );
  encoder.writeObject(webnode);
  encoder.close();
  return true;
  } catch (Exception e) {
  e.printStackTrace();
  }
  //EnumPersistenceDelegate.java
  public class EnumPersistenceDelegate extends PersistenceDelegate {
  protected boolean mutatesTo(Object oldInstance, Object newInstance) {
  return oldInstance == newInstance;
  }
  protected Expression instantiate(Object oldInstance, Encoder out) {
  Enum e = (Enum) oldInstance;
  return new Expression(e, e.getClass(), "valueOf", new Object[] { e
  .name() });
  }
  }

作者:吴旭晓 | 来源:个人博客 | 点击量:1984 | 发布时间:2013-06-26
最新留言 | 返回上一页 | 返回首页

相关文章:

版权所有:吴旭晓个人博客 Copyright © 2013-2023 个人博客