Для этого звучит особый термин.Реальность далеко не таинственна.
По сути, «Боб»:
- - это сериализуемый объект (то есть реализующий
java.io.Serializable
,и делает это правильно), что - имеет «свойства», чьи геттеры и сеттеры являются просто методами с определенными именами (как, скажем,
getFoo()
является геттером для свойства «Foo»), а - имеет открытый конструктор 0-arg (поэтому его можно создавать по желанию и настраивать, задав его свойства).
Обновление:
Что касается Serializable
:это не что иное, как «маркерный интерфейс» (интерфейс, который не объявляет никаких функций), который сообщает Java, что реализующий класс согласен (и подразумевает, что он способен) «сериализовать» - процесс, который преобразует экземпляр впоток байтов.Эти байты могут храниться в файлах, отправляться по сетевому соединению и т. Д. И иметь достаточно информации, чтобы позволить JVM (по крайней мере, тот, который знает о типе объекта) восстановить объект позже - возможно, в другом экземпляреприложения, или даже на другой машине!
Конечно, чтобы сделать это, класс должен соблюдать определенные ограничения.Главным среди них является то, что все поля экземпляров должны быть либо примитивными типами (int, bool и т. Д.), Экземплярами некоторого класса, который также сериализуем, или помечены как transient
, чтобы Java не пыталась включить их.(Это, конечно, означает, что transient
поля не выдержат поездки по потоку. Класс, имеющий transient
поля, должен быть готов к их повторной инициализации в случае необходимости.)
Класс, который не может соблюдатьэти ограничения не должны реализовывать Serializable
(и, IIRC, компилятор Java не будет даже позволять делать это).