2013-07-16 4 views
0

Я создал несколько базовых классов для обобщения функциональности. Эти классы унаследованы бетонными CDI бобы как:Сериализуемое на абстрактных базовых классах, предназначенных для JSF/CDI beans

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

Q-х:

Это хорошая практика, чтобы положить интерфейс Serializable на абстрактный базовый класс, здесь AbstractManager<T>, так что исполнители не необходимо поставить implements Serializable на каждый конкретный подкласс (как показано выше)?

Каковы плюсы и минусы для «политики базового класса» и «конкретной политики подклассов»?

Возникают ли какие-либо другие последствия, например, о местонахождении private static final long serialVersionUID = ...;?

+1

Я сделал это с моими POJO. Поскольку POJO - это то, что я собираюсь сериализовать, имеет смысл иметь абстрактный суперкласс, который реализует «Serializable». Не знаю точно, если это относится к вашим фазам. –

ответ

0

Если вы это сделаете, каждый класс должен иметь свой собственный serialVersionUID (потому что он частный, он принадлежит только этому классу).

Остальная часть вопроса действительно является стандартным вопросом для кодирования. Мое личное мнение заключается в том, что сериализуемый, а также большинство других интерфейсов маркеров, как и любой другой интерфейс. они отлично справляются с полиморфизмом, и вам не нужно обновлять использование интерфейса. Поймите, что все, что вы делаете, делает их сериализуемыми. вы не применяете никаких областей CDI, делая это.

Смежные вопросы