如何在Java中序列化泛型类?

时间:2013-05-31 07:42:55

标签: java generics serialization

我已经开始阅读有关Java中的序列化以及其他语言中的一些内容,但是如果我有一个泛型类并且我想将它的实例保存到文件中该怎么办。

代码示例

public class Generic<T> {
  private T key;
  public Generic<T>() {
    key = null;
  }
  public Generic<T>(T key) {
    this.key = key;
  }
}

保存这种对象的最佳方法是什么? (当然,在我真正的通用课程中还有更多,但我只是想知道实际的想法。)

2 个答案:

答案 0 :(得分:21)

需要像往常一样制作通用类Serializable

public class Generic<T> implements Serializable {...}

如果使用泛型类型声明字段,可能希望指定它们应该实现Serializable

public class Generic<T extends Serializable> implements Serializable {...}

请注意这里不常见的Java语法。

public class Generic<T extends Something & Serializable> implements Serializable {...}

答案 1 :(得分:0)

如果您不想(或不能)实现Serializable接口,可以使用XStream。这是一个简短的tutorial

在你的情况下:

XStream xstream = new XStream();
Generic<T> generic = ...;//whatever needed
String xml = xstream.toXML(generic);
//write it to a file (or use xstream directly to write it to a file)