Каково влияние расширения сериализуемого интерфейса

#java #serialization #wicket #wicket-1.5

#java #сериализация #калитка #калитка-1.5

Вопрос:

У меня есть вызываемый интерфейс для отображаемых перечислений IDisplayEnum . Я использую это для нескольких компонентов wicket, где я вызываю display() и получаю правильное представление перечисления. Для создания ярлыка DisplayEnumLabel у меня есть такой код:

 public class DisplayEnumLabel extends Label {
    public DisplayEnumLabel(String id, IModel<? extends IDisplayEnum> model) {
        super(id, model);
    }
}
  

Который я затем создаю с помощью:

 add(new DisplayEnumLabel(new PropertyModel(object,"fieldname")));
  

Теперь иногда я хочу сделать Model.of(T object) , когда PropertyModel не нужен, но здесь T следует расширить Serializable, чтобы мои перечисления «не подходили». Я могу решить эту проблему с помощью расширения IDisplayEnum Serailizable .

Теперь мой вопрос в том, каково влияние этого? У меня есть ~ 20 перечислений, реализующих этот интерфейс, и он часто используется. Повлияет ли это на производительность, безопасность или на какие-либо обычные недостатки сериализуемого интерфейса?

Ответ №1:

Я не знаю о каких-либо негативных последствиях реализации Serializable.

Все, на что ссылается дерево компонентов Wicket, в любом случае должно быть сериализуемым. Вы можете обойти это, используя IDetachableModels, но Model сохраняет прямую ссылку на обернутый объект.