Экземпляр объекта без нового? - PullRequest
3 голосов
/ 02 июля 2010

Как мы знаем, мы можем создать экземпляр объекта без ключевого слова new, используя classloader / клонирование объекта / сериализацию объекта.Когда я использую эти методы для создания объекта, вызывается конструктор или нет?

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

Для Object.clone конструктор не вызывается.

Для сериализации вызывается наиболее производный несериализуемый конструктор без аргументов базового класса. Обычно реализуется путем загрузки байт-кода, который не проверяется. Конструктор должен быть доступен для самого базового сериализуемого класса.

1 голос
/ 02 июля 2010

Насколько я знаю, все три используют конструктор, даже сериализацию.

http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html

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

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