java中可序列化的可变类型

时间:2015-08-25 12:06:18

标签: java serialization

我有一个标记为Serializable的类,即此类实现了Serializable接口。这个类有一些Serializable类型的变量。我无法理解为什么这些变量是Serializable类型。我知道Serializable接口。请明确这个概念。这将是一个很大的帮助。我的班级是 -

public class DestinationGroups  implements java.io.Serializable {


 private int id;
 private Serializable name;// why serializable here??
 private Serializable description;// why serializable here??
 private BigDecimal rating;
 private Set destinationses = new HashSet(0);
 private Set destinationGroupRatingses = new HashSet(0);

 public DestinationGroups() {
 }


 public DestinationGroups(int id) {
    this.id = id;
 }

 ..........other code..............
}

3 个答案:

答案 0 :(得分:4)

@ JordiCastilla的回答解释了Serializable是什么,但不是为什么它出现在这里。

这里真正的问题是Hibernate对NVARCHAR的默认映射。在最近的版本(即Hibernate 4.2及更高版本)中,NVARCHAR被映射到String。在旧版本中,Hibernate将NVARCHAR映射到Serializable

如果您使用Hibernate代码生成插件生成Java代码,那么解决方案是编辑您的插件" hibernate.reveng.xml"如下所述:

另一方面,如果您在运行时错误地使用Hibernate映射NVARCHAR,那么此Q& A可能有所帮助:

答案 1 :(得分:0)

什么是序列化?
序列化基本上是将对象转换为bytes,这使得该对象可以轻松保存,共享或流式传输。

为什么课堂上的属性必须是可序列化的?
这意味着,Serializable对象中的所有组件必须是可序列化的,或者您将破坏Serializable合同。

查找herehere进一步的序列化信息。

答案 2 :(得分:-1)

如果要序列化一个类,其所有属性必须为Serializable。使用此用法,您可以保证生成所有属性Serializable。 如果某个名称是一个不可序列化的对象,您将无法序列化整个类。

相关问题