В чем разница между реализацией сериализуемого и расширением сериализуемого?

1

У нас есть некоторые ошибки, считывающие сообщение объекта из очереди JMS. Похоже, что это происходит во время сериализации объекта.

Я вошел в библиотеку домена, которую мы используем, и корневой класс объектной модели объявлен как "расширяет Serializable" вместо "реализует Serializable"...

Существуют ли какие-либо отличия от двух подходов, я обычно видел когда-либо "вариант Serializable". Может ли это иметь побочный эффект, который вызывает проблемы, которые мы наблюдаем?

Теги:
serialization
jms

2 ответа

4

extends <interface> зарезервирован для интерфейсов. Только интерфейс может распространяться на несколько интерфейсов. Классы (включая абстрактные) будут реализовывать только интерфейсы.

2

Поскольку Serializable является интерфейсом, его может расширить только другой интерфейс. Все конкретные классы, которые хотят использовать интерфейс, должны его реализовать.

  • 0
    Так что, если я вижу ошибки JMS на подклассах, которые явно не реализуют Serializable, это может быть вызвано этой причудой в иерархии объектов? Они также никогда не объявляют уникальный сериализуемый идентификатор ...
  • 0
    @MichaelReynolds Что за странность в иерархии объектов? Если ваши классы не являются сериализуемыми, вы получите ошибки, если попытаетесь их сериализовать. Если вы попытаетесь расширить интерфейс в классе, вы получите ошибку компилятора.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню