Serializable
- это интерфейс маркера (например, Cloneable
), который используется для установки флага для стандартного кода библиотеки времени выполнения Java, согласно которому объект может быть сериализован в соответствии с разработчиком этого класса.
Ключевое слово transient
можно использовать для указания того, что атрибут не нуждается в сериализации, например, потому что он является производным атрибутом.
См. Также этот ответ на аналогичный вопрос о SO и этот вопрос о разработке интерфейсов маркеров .
Обновление
Почему маркерные интерфейсы и отсутствие ключевых слов для таких вещей, как сериализация, клонирование и т. Д.? Я предполагаю, что будет возможность последовательно расширять библиотеку времени выполнения Java новыми интерфейсами маркеров в сочетании со слишком большим количеством ключевых слов, если поведенческие аспекты проникнут в язык.
Тот факт, что атрибуты класса не могут реализовывать интерфейсы, а transient
можно рассматривать как универсальное свойство атрибута, имеет смысл ввести transient
в качестве ключевого слова языка.