我有一个实现Serializable的类。类中还有一个其他类对象,它不实现可序列化。如何序列化该类的成员应该怎么做。
我的班级是这样的
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。请帮忙。提前致谢
答案 0 :(得分:6)
当然,有Serializable
的明显解决方案。我明白并不总是一种选择。
也许你可以扩展Address
并将Serializable
放在你做的孩子身上。然后,您将其Employee
设置为Child
字段而不是Address
字段。
以下是其他一些需要考虑的事项:
Employee.address
字段保留为Address
类型。如果您拨打Employee.setAddress(new SerializableAddress())
Address
为空,即使Address
的类型不可序列化,您也可以序列化整个员工。Address
标记为瞬态,则会跳过尝试序列化Address
。这可以解决您的问题。 然后还有其他"序列化"像XStream这样的框架不需要标记界面才能工作。这取决于您的要求,但这是否是一个选项。
答案 1 :(得分:1)
答案 2 :(得分:0)
如果您可以选择使用第三方库进行序列化,那么您可以使用例如kryo。这有一个默认的序列化,不需要实现接口或注释字段。
您可以查看Which is the best alternative for Java Serialization?以了解更多选择。