![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| ShkVal |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 10.11.2004 Репутация: нет Всего: 1 |
Народ подскажите пожалуйста.
Мне надо создать копию класса можно ли это как-то сделать. Или только переопределять clone() и ручками всё переприсваивать. И если в этот класс входят другие классы (т. е. объявлены переменные других классов) для них тоже переопределять clone(). Или всё-таки проще можно взять копии объектов? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Вот клоном и есть проще всего.
-------------------- |
|||
|
||||
| ShkVal |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 10.11.2004 Репутация: нет Всего: 1 |
Чепез clone долго и у меня в классе объявлено много ArrayList. Это придётся ещё писать clone() и для объектов которые будут лежать в этих листах.
Может есть другие способы? |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Как это долго?
Нет. -------------------- |
||||
|
|||||
| ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: 5 Всего: 9 |
клонирование через сериализацию
-------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
... предполагает работу сo стримами, что затормозит все а преимуществ нет - придется возиться с Сериалайзабл и ИО вместо clone(). Не подumal я об этом, правдa. Добавлено @ 18:27 К тому же не все объекты в java.lang наследуют от Serializable, так что это не самая лучшая идея. -------------------- |
|||
|
||||
| Zandr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
Cloneable есть у многих стандартных вещей, у которых разумно было его вводить. Будешь переопределять clone() засовывай в декларацию класса, что он Cloneable - на всякий случай. API Пушкин читать будет? Это сообщение отредактировал(а) Zandr - 23.11.2004, 08:28 |
||||
|
|||||
| polosatij |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
я тут совсем не в тему влезу
создаст мне действительно копию или просто ссылки на "объекты" (переменные, методы) Object? если действительно копия: то почему не
это дело вкуса или есть отличия |
||||
|
|||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Clone создаст копию всех полей, которые есть у класса. Но вот ссылки будут указывать на те же объекты, что и его предок.
Для Object дествительно по барабану - у него полей никаких нет. |
|||
|
||||
| polosatij |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
я имел ввиду : "мойОбъект".. получается что clone лучше чем мо= new мойОбъект() ? (если мойОбъект уже существует в памяти) -> имеется ввиду до прихода GC. Или я не прав? скажи, а через clone я могу переписывать переменные, объекты? или будет также получаться, как и
надеюсь понятно объяснил |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
и clone и оператор new создают новый объект, и тут ничего не поделаешь -------------------- |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Либо переписать clone так, чтобы возвращалась ссылка на this |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Тогда получится ссылка нa тот же самый объekt, что может привести k нехорошим последствиям Ссылку нa тот же самый объекt можнo еще проще получить:
-------------------- |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |