我正在构建一个小型应用程序来保存某种统计数据。在我开始努力编写这个问题之前,我有一个普遍的问题。
假设我们有一个自己类的对象X,代表一个体育比赛。它有几个字段,其中有另一个对象Y - 也是它自己的类。 Y代表给定游戏的统计数据。结构应该是这样的:
class Match {
Date date;
String venue;
ArrayList<Game>[10] gameList;
...
}
class Game{
int result;
int blah blah;
...
}
如果我去创建一些Match对象,例如存储在一个数组中,我可以序列化一个包含这个Matches数组的对象,但是当我反序列化它时,我能否将数据保存在里面比如游戏对象?我是否需要让每个类都使用Serializable?
我担心的原因是来自JAVA Api Documentation的那些行:
在反序列化期间,非可序列化类的字段将 使用公共或受保护的无参数构造函数初始化 类。必须可以访问子类的无参数构造函数 序列化。将恢复可序列化子类的字段 来自溪流。
遍历图形时,可能遇到没有的对象 支持Serializable接口。在这种情况下 将抛出NotSerializableException并将标识该类 不可序列化的对象。
答案 0 :(得分:2)
是的,您需要将Match
类序列化。创建类序列化意味着您需要使该类的所有实例变量也可序列化(请注意递归定义)。在您的示例中,要使Match
类可序列化,您需要使Game
类可序列化。
答案 1 :(得分:0)
我想这个词
非序列化类
意味着这样的类没有实现可序列化的接口,java中存在的类没有实现可序列化的接口,你不能将它们序列化,例如java.awt.BasicStroke
你可以用&# #39; t直接序列化该类的任何实例