| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Копия класса |
| Автор: ShkVal 19.11.2004, 17:06 |
| Народ подскажите пожалуйста. Мне надо создать копию класса можно ли это как-то сделать. Или только переопределять clone() и ручками всё переприсваивать. И если в этот класс входят другие классы (т. е. объявлены переменные других классов) для них тоже переопределять clone(). Или всё-таки проще можно взять копии объектов? |
| Автор: Domestic Cat 19.11.2004, 17:21 |
| Вот клоном и есть проще всего. |
| Автор: ShkVal 19.11.2004, 17:47 |
| Чепез clone долго и у меня в классе объявлено много ArrayList. Это придётся ещё писать clone() и для объектов которые будут лежать в этих листах. Может есть другие способы? |
| Автор: Domestic Cat 19.11.2004, 17:49 | ||||
Как это долго?
Нет. |
| Автор: ElectricalStorm 19.11.2004, 18:14 |
| клонирование через сериализацию |
| Автор: Domestic Cat 19.11.2004, 18:25 | ||
... предполагает работу сo стримами, что затормозит все а преимуществ нет - придется возиться с Сериалайзабл и ИО вместо clone(). Не подumal я об этом, правдa. Добавлено @ 18:27 К тому же не все объекты в java.lang наследуют от Serializable, так что это не самая лучшая идея. |
| Автор: Zandr 23.11.2004, 08:24 | ||||
Cloneable есть у многих стандартных вещей, у которых разумно было его вводить. Будешь переопределять clone() засовывай в декларацию класса, что он Cloneable - на всякий случай. API Пушкин читать будет? |
| Автор: polosatij 25.11.2004, 13:57 | ||||
я тут совсем не в тему влезу
создаст мне действительно копию или просто ссылки на "объекты" (переменные, методы) Object? если действительно копия: то почему не
это дело вкуса или есть отличия |
| Автор: AntonSaburov 25.11.2004, 16:08 |
| Clone создаст копию всех полей, которые есть у класса. Но вот ссылки будут указывать на те же объекты, что и его предок. Для Object дествительно по барабану - у него полей никаких нет. |
| Автор: polosatij 25.11.2004, 16:31 | ||||
я имел ввиду : "мойОбъект".. получается что clone лучше чем мо= new мойОбъект() ? (если мойОбъект уже существует в памяти) -> имеется ввиду до прихода GC. Или я не прав? скажи, а через clone я могу переписывать переменные, объекты? или будет также получаться, как и
надеюсь понятно объяснил |
| Автор: Domestic Cat 25.11.2004, 17:08 | ||
и clone и оператор new создают новый объект, и тут ничего не поделаешь |
| Автор: AntonSaburov 25.11.2004, 17:31 | ||
Либо переписать clone так, чтобы возвращалась ссылка на this |
| Автор: Domestic Cat 25.11.2004, 17:38 | ||||
Тогда получится ссылка нa тот же самый объekt, что может привести k нехорошим последствиям Ссылку нa тот же самый объекt можнo еще проще получить:
|