【发布时间】:2014-01-12 14:14:50
【问题描述】:
我有一个 BaseRecord 类,它代表一个实现 Serializable ..的 DBRecord ..
我需要另一个 DB 触发器排序功能,它有自己的数据成员 = 触发激活事件数据 => 满足时会插入 BaseRecord
所以我的问题是
- 我应该在这里使用组合还是继承?我会选择组合作为更好的说法 TriggerRecord HAS-A BaseRecord 即在触发激活事件发生时插入..
- 还有一件事是 BaseRecord 实现了 Serializable,用户可以根据操作模式修改 BaseRecords(最终是 DB Records)AND 修改 TriggerRecord 所以我需要 BaseRecords(toString(), getter、setter 和其他数据修改)和 TriggerRecord(BaseRecords 方法以及触发器激活事件数据处理方法)
所以..
class BaseRecord implements Serializable
{
...
...
}
class TriggerRecord
{
EventData eventData; //Non-custom Objects
BaseRecord br;
}
所以我的问题
- 在这种情况下我是否应该使用组合?
- 并且通过网络序列化发送 TriggerRecord ArrayList 将自动实现,因为 TriggerRecord 的所有数据成员都是可序列化的,还是我需要使用 SerialVersionUID 显式实现可序列化?
编辑 1: 截至目前TriggerRecord只有1个BaseRecord的自定义对象,可能会添加更多..本质上TriggerRecord也是另一个映射到具有eventData和BaseRecord存储格式不同的数据库记录,因为它存储了超过1个关系的BaseRecords..
如果我扩展 BaseRecord,那么我将不得不使用 super.toString() 来访问 BaseRecord 的字符串表示形式。 我只是尝试在 TriggerRecord 中组合 BaseRecord .. 即使所有数据成员都已经是 Serializable ,它也需要实现 Serializable .. 所以问为什么有必要为由其他自定义对象组成的类显式实现 Serializable
【问题讨论】:
-
仍然没有必要,但我确定了一个解决方案..我为复合对象实现了它,因为没有它会导致 NotSerializableException
标签: java serialization composition