8

我有一个实现可序列化的类。该类中还有一个未实现可序列化的类对象。应该做什么来序列化类的成员。

我的课是这样的

public class Employee implements Serializable{
    private String name;
    private Address address;
}


public class Address{
    private String street; 
    private String area;   
    private String city;
}

在这里,我无权访问 Address 类以使其实现 Serializable。请帮忙。提前致谢

4

3 回答 3

6

好吧,当然有明显的解决方案Serializable。我知道这并不总是一种选择。

也许你可以延长Address并穿上Serializable你制作的孩子。然后你让它Employee有一个Child字段而不是一个Address字段。

以下是需要考虑的其他一些事项:

  • 可以Employee.address字段保留为Address类型。如果您调用Employee.setAddress(new SerializableAddress())
  • 如果Address为 null,即使Address的类型不可序列化,您也可以序列化整个员工。
  • 如果您标记Address为瞬态,它将跳过尝试序列化Address。这可能会解决您的问题。

然后还有其他“序列化”框架,如XStream,不需要标记接口即可工作。这取决于您的要求是否可以选择。

于 2013-09-05T18:07:35.877 回答
1

您不能直接使这个 Address 类可序列化,因为您无权修改它。

有几个选项:

  • 创建地址类的子类并使用它。您可以将此类标记为可序列化。
  • 将地址标记为瞬态。

请看一下这个stackoverflow链接

于 2013-09-05T18:12:41.957 回答
0

如果您可以选择使用 3rd 方库进行序列化,那么您可以使用例如kryo。这有一个默认序列化,不需要实现接口或注释字段。

您可以检查哪个是 Java 序列化的最佳替代方案?更多选择。

于 2013-09-05T18:35:45.987 回答