Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Присваивание объекта 
V
    Опции темы
devmstr
Дата 21.2.2007, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Что будет содердать ms1?

Mouse ms0= new Mouse(...);
ms1 = ms0;


Что он будет содержать ссылку на ms0 или его копию?


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
tux
Дата 21.2.2007, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Цитата(devmstr @  21.2.2007,  08:15 Найти цитируемый пост)
Что он будет содержать ссылку на ms0 или его копию? 

ms1 будет содержать ссылку на объект, созданный с помощью 'new Mouse()'. ms0 будет содержать точно такую же ссылку.
PM MAIL Skype GTalk Jabber YIM   Вверх
devmstr
Дата 21.2.2007, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Понятно, а как мне тогда создать копию объекта?


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
djGri
Дата 21.2.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.2.2005

Репутация: 1
Всего: 3



ms1 = ms0.clone();
(У Mouse должен быть переопределен clone(), который он наследовал у object'a )

Это сообщение отредактировал(а) djGri - 21.2.2007, 12:51
PM MAIL   Вверх
_Y_
Дата 21.2.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Поскольку разные объекты клонируются по разному, единой схемы разработано быть не может. 

Ну, например, у объекта имеется ссылка на главное окно программы. Естественно, что у клона должна быть такая же ссылка (главное окно-то одно). Другой объект содержит редактируемое JTextField, из которого он берет данные. Естественно, что при клонировании должно быть создано новое поле, содержащее тот же текст (иначе один и тот же текст будет сообщаться всем клонированным объектам).

Таким образом, только сам объект знает как себя клонировать и метод clone почти всегда должен писаться вручную.

Всегда жаль расстраивать хороших людей smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
LSD
Дата 21.2.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(_Y_ @  21.2.2007,  13:39 Найти цитируемый пост)
Ну, например, у объекта имеется ссылка на главное окно программы. Естественно, что у клона должна быть такая же ссылка (главное окно-то одно). Другой объект содержит редактируемое JTextField, из которого он берет данные. Естественно, что при клонировании должно быть создано новое поле, содержащее тот же текст (иначе один и тот же текст будет сообщаться всем клонированным объектам).

Неудачный пример. Объекты GUI должны клонироваться, в исключительных случаях.

Вообще стандартный clone() осуществляет лишь поверхностное клонирование, т.е. копируются только ссылки на объекты. Но в принципе никто не мешает доработать его напильником.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
nornad
Дата 21.2.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(LSD @  21.2.2007,  14:35 Найти цитируемый пост)
Но в принципе никто не мешает доработать его напильником. 

Особенно если учесть, насколько редко требуется создавать полную копию объекта со всем его содержимым. Много чаще хватает просто второй ссылки.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
_Y_
Дата 21.2.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Цитата(LSD @ 21.2.2007,  14:35)
Неудачный пример. Объекты GUI должны клонироваться, в исключительных случаях.

Я, собственно, хотел доходчиво объяснить идею. А удачный пример, да на вскидку - это не ко мне, это к гуру smile 

ЗЫ. Такой пример привел именно потому, что у меня была подобная задача с GI когда-то давно и именно на ней я в вопросах клонирования разобрался. Правда это была не Java, а VB6 (тА еще гадость в плане объектном модели).

Кстати, а почему в исключительных? Сделал объект, расклонировал, добавил все клоны в контейнер и радуйся жизни smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
LSD
Дата 21.2.2007, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(_Y_ @  21.2.2007,  17:31 Найти цитируемый пост)
Кстати, а почему в исключительных? Сделал объект, расклонировал, добавил все клоны в контейнер и радуйся жизни

А если он уже был добавлен? У двух разных компонентов будет общий контейнер, при этом сам контейнер "знает" только об одном. Плюс всевозможные листенеры, тоже не понятно, что с ними делать.
Да и GUI компоненты довольно плохо клонируются, т.к. там куча классов, которые не клонируемы и реализация которых скрыта, вот попробуй тот же Graphics клонировать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
_Y_
Дата 21.2.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Цитата(LSD @ 21.2.2007,  17:38)
Да и GUI компоненты довольно плохо клонируются...

По моему мы говорим о разных вещах. Я вроде не прелагал клонировать UI компоненты. Я писал
Цитата
...при клонировании должно быть создано новое поле...

Т.е. клонируется какой-то объект данных, хранящий ссылку на новое JTextField. А уж как оно
создается - объект его знает. Самое простое - в конструкторе объекта прописать
Код

ObjectsTextField = new JTextField();

но вариантов может быть много.

Так что ни о каком клонировании UI я, вроде не говорил.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
devmstr
Дата 22.2.2007, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Спасибо! Буду знать!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0799 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.