可序列化类有什么意义?据我所知,你可以通过网络发送对象,并知道在两端都会验证对象是否是正确的对象。例如,如果我有一个具有可序列化类的服务器并希望通过对象输出流将数据发送到应用程序,我可以使用两端具有相同UID的可序列化类来验证该对象是否合法而不是被黑客入侵?如果我错了,请纠正我,但这是我如何理解可序列化界面上的文档
答案 0 :(得分:2)
安全性和序列化都不同。
Java序列化是将对象转换为字节。周期。
optional UID字段用于确保序列化和反序列化的对象(结构)版本匹配。
序列化对于将对象转换为文件并在以后将其重新加载回对象非常有用,当然您也可以通过网络发送该文件(流)。
答案 1 :(得分:0)
你是对的,但你可以更广泛地思考它。
您可以将可序列化的类转换为字节
您可以将此类型的对象添加到可序列化的集合中,并且它将被正确序列化(例如,如果列表可序列化,您可以列出它们并序列化列表)
顺便说一下,serialVersionUID是可选的。它会自己生成一个,虽然它会更脆弱 - 如果你改变一个方法签名,jvm会将它转换为一个改变的签名,并认为该类现在与以前的序列化版本不兼容,即使您没有更改数据字段。如果你自己创建了自己,那么你就基本上重写了这个机制。