【问题标题】:Serializable on abstract base classes intended for JSF/CDI beans在用于 JSF/CDI bean 的抽象基类上可序列化
【发布时间】:2013-07-14 15:19:04
【问题描述】:

我创建了一些基类来概括功能。这些类由具体的 CDI bean 继承,例如:

@Named
@WhateverCdiScoped
public class PseudoEntityManager extends AbstractManager<PseudoEntity> implements Serializable
{
    ...
}

问题

Serializable 接口放在抽象基类上,这里是AbstractManager&lt;T&gt;,这样实现者不必将implements Serializable 放在每个具体的子类上(如上所示),这是一个好习惯吗?

“基类策略”和“具体子类策略”的优缺点是什么?

是否有任何其他后果被忽略,例如关于private static final long serialVersionUID = ...;的位置?

【问题讨论】:

  • 我已经用我的 POJO 做到了这一点。由于 POJO 是我要序列化的东西,因此拥有一个实现 Serializable 的抽象超类是有意义的。不确定是不是你的豆子的情况。

标签: java jsf serialization jsf-2 cdi


【解决方案1】:

如果你这样做,每个类都应该有自己的serialVersionUID(因为它是私有的,它只属于那个类)。

剩下的问题实际上是一个编码标准问题。我个人的看法是,可序列化接口以及大多数其他标记接口就像任何其他接口一样。它们可以很好地处理多态性,您不需要重新声明接口的使用。了解您所做的只是使它们可序列化。这样做不会强制执行任何 CDI 范围。

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2012-11-09
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多