【发布时间】:2016-06-06 17:45:12
【问题描述】:
我正在尝试通过磁盘和网络序列化我的简单 POJO 对象。但我需要控制可以序列化的属性。 例如:
class POJO
{
String name;
int age;
}
现在在上面的示例中,我希望名称和年龄都在磁盘上进行序列化。但我只想通过网络对年龄进行序列化。 在做了一些研发之后,我找到了两种方法来做到这一点,但我还没有能够开发出一个好的全功能解决方案。
解决方案 1:使用瞬态关键字。
问题:如果我使用瞬态,它会完全停止序列化。
解决方案 2:利用可外部化的接口。
问题:如果我使用这个接口,我必须实现两个方法并自己控制序列化。我怎么知道这次我的方法被调用以在磁盘或网络上进行序列化。如果我确实通过使用一些标志来解决这个问题,那么代码会很混乱。
我的想法是某种形式的设计级解决方案。例如创建一个接口,只为那些需要序列化的属性公开 getter 方法。然后使用它,我可以读取和写入对象,并且反序列化时的 java 通过反射或我必须仅序列化/反序列化那些暴露了 getter 方法的属性自动检测。 java有这样的东西吗?
或者也许是更清洁、更优雅、更整洁的解决方案。
请帮帮我。
谢谢。
【问题讨论】:
标签: java networking serialization