![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
devmstr |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 28.4.2004 Где: Ukraine Репутация: нет Всего: 11 |
Что будет содердать ms1?
Mouse ms0= new Mouse(...); ms1 = ms0; Что он будет содержать ссылку на ms0 или его копию? -------------------- Think different ©Steve Jobs ![]() |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
||||
|
||||
devmstr |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 28.4.2004 Где: Ukraine Репутация: нет Всего: 11 |
Понятно, а как мне тогда создать копию объекта?
-------------------- Think different ©Steve Jobs ![]() |
|||
|
||||
djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
ms1 = ms0.clone();
(У Mouse должен быть переопределен clone(), который он наследовал у object'a ) Это сообщение отредактировал(а) djGri - 21.2.2007, 12:51 |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Поскольку разные объекты клонируются по разному, единой схемы разработано быть не может.
Ну, например, у объекта имеется ссылка на главное окно программы. Естественно, что у клона должна быть такая же ссылка (главное окно-то одно). Другой объект содержит редактируемое JTextField, из которого он берет данные. Естественно, что при клонировании должно быть создано новое поле, содержащее тот же текст (иначе один и тот же текст будет сообщаться всем клонированным объектам). Таким образом, только сам объект знает как себя клонировать и метод clone почти всегда должен писаться вручную. Всегда жаль расстраивать хороших людей ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Неудачный пример. Объекты 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. |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Особенно если учесть, насколько редко требуется создавать полную копию объекта со всем его содержимым. Много чаще хватает просто второй ссылки. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Я, собственно, хотел доходчиво объяснить идею. А удачный пример, да на вскидку - это не ко мне, это к гуру ![]() ЗЫ. Такой пример привел именно потому, что у меня была подобная задача с GI когда-то давно и именно на ней я в вопросах клонирования разобрался. Правда это была не Java, а VB6 (тА еще гадость в плане объектном модели). Кстати, а почему в исключительных? Сделал объект, расклонировал, добавил все клоны в контейнер и радуйся жизни ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А если он уже был добавлен? У двух разных компонентов будет общий контейнер, при этом сам контейнер "знает" только об одном. Плюс всевозможные листенеры, тоже не понятно, что с ними делать. Да и 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. |
|||
|
||||
_Y_ |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
По моему мы говорим о разных вещах. Я вроде не прелагал клонировать UI компоненты. Я писал
Т.е. клонируется какой-то объект данных, хранящий ссылку на новое JTextField. А уж как оно создается - объект его знает. Самое простое - в конструкторе объекта прописать
но вариантов может быть много. Так что ни о каком клонировании UI я, вроде не говорил. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||||
|
|||||||
devmstr |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 28.4.2004 Где: Ukraine Репутация: нет Всего: 11 |
Спасибо! Буду знать!
-------------------- Think different ©Steve Jobs ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |