PDA

Просмотр полной версии : Clone()


PIL78
27.04.2007, 12:25
ДОбрый день. Господа, а есть какой-то стандартный быстрый способ клонирования объектов собственных класов, чтобы не реализовывать самому и не делать поэлементное копирование?
Спасибо.

etc
27.04.2007, 12:57
http://flasher.ru/forum/showpost.php?p=573868&postcount=14

PIL78
27.04.2007, 13:52
Спасибо большое :)

PIL78
27.04.2007, 20:47
Дошли руки, попробовал, не все так хорошо :(
Object получить без проблем, а вот тип привести - ругается, что не может. Ни через as, ни через явное приведение.

TypeError: Error #1034: Type Coercion failed: cannot convert Object@35d34a1 to bcs.entities.Permission.
at componentsAdmin::EditRoleForm/componentsAdmin:EditRoleForm::addToRole()[D:\svn\bcs\client_flex\componentsAdmin\EditRoleForm.mxml:130]
at componentsAdmin::EditRoleForm/__btnAdd_click()[D:\svn\bcs\client_flex\componentsAdmin\EditRoleForm.mxml:9]

PIL78
27.04.2007, 21:24
ладно, будет старым дедовским способом -
public interface ICloneable
{
function clone():*;
}

etc
27.04.2007, 21:28
PIL78, оформите свой код в постах.

PIL78
27.04.2007, 22:18
Код я оформил, но реально не услышал, почему не отрабатывает приведение типов, так как в указанном примере. Хотя код практически аналогичный.
Спасибо

etc
27.04.2007, 23:06
Потому что лучше писать свой метод clone() в классе, если он нужен.

PIL78
28.04.2007, 01:32
Уважаемый __etc, у меня в первом посте еще написано:
Господа, а есть какой-то стандартный быстрый способ клонирования объектов собственных класов, чтобы не реализовывать самому
Вы мне привели пример с копированием через BitArray, а теперь говорите совершенно другое.
Я знаком не с одним ООП языком и поверьте знаю как делаются такие вещи, поэтому и спросил про варианты конкретно в этой технологии.
Так что там с приведением типов - в чем проблемма?

etc
28.04.2007, 01:35
Не знаю, лично я этим методом не пользовался. Обычно для клонирования пишу соответствующий метод класса, тем более, это не занимает много времени. Да и сама задача такого рода редко появляется.
Могу поковыряться, конечно, если не забуду. О результатах отпишу (если нет, значит забыл) :).

Flashdown
28.04.2007, 13:41
ещё для клонирования объекта есть метод в библиотеке ObjectUtils