2013-11-19 2 views
0

Когда класс объявлен как final, можно ли клонировать или сериализовывать его объекты? Или это невозможно, потому что final предотвращает расширение подклассов, что предотвращает реализацию клонирования и сериализации?Клонирование и сериализация конечного объекта

+1

final не имеет отношения к клонированию. Предотвращает копирование подкласса. – BevynQ

ответ

1

Заключительный для классов -> Вы не можете расширить класс. Финал для объектов -> Вы не можете изменить ссылку на объект.

Serializable/cloning ---> Эти понятия предназначены для объектов. Вы реализуете интерфейс, чтобы сделать объект класса perticular Serializable/Cloneable.

Итак, да, когда класс объявлен как финал, можно выполнить сериализацию/клонирование своих объектов при условии реализации необходимых интерфейсов.

+0

Извините, я думаю, что я объяснил это плохо. То, что я пытаюсь понять, это: С точки зрения злоумышленника, можно ли клонировать/сериализовать что-то, когда класс был объявлен окончательным? – user3007194

+0

(С точки зрения злоумышленника ?? ..) .. Да ... Но класс должен был реализовывать необходимые интерфейсы ... – TheLostMind

+0

OK. Итак, предполагая, что необходимые интерфейсы не были реализованы, и класс был объявлен окончательным, злоумышленник не сможет клонировать/сериализовать? Я пытаюсь написать класс, который не может быть клонирован, и мне интересно, сделает ли его окончательным, чтобы злоумышленник не делал его клонированным/сериализуемым и клонировал/сериализовал его. Извините за этот беспорядок вопроса и спасибо за ответы. – user3007194

1

Я думаю, что вы можете не понимать некоторые концепции ООП и их реализацию на Java.

Вы распространяете классы, в то время как вы сериализуете и клонируете объектов.

Существует Singleton pattern, который позволяет создавать только один объект, но это совершенно другая история.

Смежные вопросы