Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > создание копии объекта


Автор: Pawl 18.11.2010, 00:57
Доброго времени суток, господа!
Переделываю для мобилки одну игрушку (гомоку), написанную мною ранее на яве-1.6 и теперь пытаюсь реализовать отмену хода. В исходной версии я делал это так: перед тем, как сделать ход, клонировал объект, в котором у меня находятся все данные о ходах противников, и заносил клон в коллекцию. а когда отменял ход, извлекал этот клон. Тут проблема в том, что в классе Object в j2me я НЕ НАШЕЛ метод clone()! Точнее Netbeans ругался, когда я пытался вызвать этот метод на объекте в мобильном приложении. Был бы признателен, если подскажете, как мне обойти эту трудность!

Автор: Mabramyan 18.11.2010, 05:52
А ваши классы имплементят интерфейс Clonable ?
http://www.java-samples.com/showtutorial.php?tutorialid=344

Автор: Pawl 18.11.2010, 10:14
Цитата

А ваши классы имплементят интерфейс Clonable ?

Дело в следующем: в j2me НЕТУ такого интерфейса. В том-то и проблема: как создать копию объекта не используя Clonеable!
Кое-какие мысли по этому поводу у меня появились, но вдруг есть какие-то стандартные решения? Не хочется, знаете ли, изобретать велосипед!

Автор: kkorsakoff 18.11.2010, 10:59
В ME нет ни clone ни clonable. Создайте конструктор, принимающий объект того же класса и вручную присваивайте всем полям значения из исходного объекта. 

Автор: oxigen 18.11.2010, 11:37
Идея с использованием clone() мне вообще кажется не слишком удачной.
Вы должны сохранять состояние только тех полей, значение которых необходимо для отмены хода. Но никак не весь объект целиком.

Автор: Pawl 18.11.2010, 12:10
Да, согласен, клонирование тут - не совсем удачное решение, т. к. ресурсоемко. Что же, последую рекомендации г-на kkorsakoff'a, тем более, что я так и думал поступать.
Спаасибо всем, тему закрываю.

Автор: Pawl 18.11.2010, 15:03
YESSS! У меня получилось! Именно так, как советовал г-на kkorsakoff!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)