![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Larrr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 29.1.2006 Где: Прага Репутация: нет Всего: 2 |
Пишу без особой надежды, но все же - есть у меня объект, в котором содержатся другие объекты из внешней библиотеки. Надо скопировать этот объект полностью - то есть включая внутренные объекты.
1) У внутренних объектов интерфейс Cloneable не реализован и код править я не могу(уже готовая библиотека). 2) В главном объекте внутренние объекты заранее неизвестны в каком соотношении и количестве будут. Известно только 10 классов из библиотеки, которым они могут принадлежать. Можно ли сделать универсальный глубинные клонировщик внешнего объекты с учетом 1) и 2) (универсальный в том смысле, что известен интерфейс внешнего объекта, но внутри он может содержать поля-объекты, которые я заранее не знаю, в каком количестве будут присутствовать). |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Что известно о внутренних объектах. У них есть конструктор по умолчанию? Или может быть они сериализуемые? -------------------- 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. |
|||
|
||||
| Larrr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 29.1.2006 Где: Прага Репутация: нет Всего: 2 |
Они несериализуемые(уже пробовала). Но во всех присутствует конструктор по умолчанию. Но он protected и я не могу его использовать(или не знаю как
Это сообщение отредактировал(а) Larrr - 12.7.2007, 12:23 |
|||
|
||||
| ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 3 Всего: 19 |
Думаю, в таком случае надо нагло ломиться через reflection к сокрытым свойствам.
|
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
В простейшем случае это выглядит так:
-------------------- 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. |
||||
|
|||||
| Larrr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 29.1.2006 Где: Прага Репутация: нет Всего: 2 |
LSD, спасибо. Очень хороший понятный код
К сожалению поля моих внешних классов все protected, плюс еще содержат свои подклассы и поэтому reflection ничего не может сделать...Вернее может, но слишком сложно. Это сообщение отредактировал(а) Larrr - 12.7.2007, 15:32 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Так мой код работает даже с private полями. Единственное но, если установлен менеджер безопасности, то он может не дать выполнить setAccessible(true). -------------------- 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. |
|||
|
||||
![]()
|
| Правила форума "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. |