Почему Java нуждается в Serializable интерфейсе? - PullRequest
111 голосов
/ 14 января 2009

Мы интенсивно работаем с сериализацией, и необходимость указывать тег Serializable для каждого объекта, который мы используем, является своего рода бременем. Особенно когда это сторонний класс, который мы не можем изменить.

Вопрос: поскольку Serializable - пустой интерфейс, а Java обеспечивает надежную сериализацию после добавления implements Serializable - почему они не сделали все сериализуемым и все?

Чего мне не хватает?

Ответы [ 13 ]

0 голосов
/ 02 октября 2013

Хотя я согласен с замечаниями, высказанными здесь в других ответах, реальная проблема заключается в десериализации: если определение класса изменится, существует реальный риск, что десериализация не сработает. Никогда не изменять существующие поля - это довольно серьезное обязательство для автора библиотеки! Поддержание совместимости API достаточно рутинно.

0 голосов
/ 27 августа 2009

Есть некоторые вещи в Java, которые просто не могут быть сериализованным, потому что они зависят от времени выполнения. Такие вещи, как потоки, потоки, время выполнения, и т.д., и даже некоторые классы GUI (которые связаны с базовой ОС) не могут быть сериализованным.

0 голосов
/ 14 января 2009

Что ж, мой ответ таков: это ни по какой веской причине. И из ваших комментариев я вижу, что вы уже узнали это. Другие языки с радостью пытаются сериализовать все, что не попадает на дерево после того, как вы сосчитали до 10. Объект должен по умолчанию быть сериализуемым.

Итак, что вам в основном нужно, это прочитать все свойства вашего стороннего класса самостоятельно. Или, если это вариант для вас: декомпилируйте, поместите туда ключевое слово damn и перекомпилируйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...