Скопируйте объект/класс Java от одного classloader до другого classloader

Я сказал бы, что это действительно зависит от Ваших потребностей. TFS очень хорош, я использовал его экстенсивно, но он очень нацелен на уровень предприятия, если Вам не будут нужны все те функции, это не могло бы быть необходимо. Если Вам действительно нужны те функции (особенно ветвление, масштабируемость, отслеживание объекта работы, и т.д.) они стоят каждого пенса. Следует иметь в виду, что TFS включает отслеживание ошибок, отслеживание объекта работы и другие функции вне управления исходным кодом. Если у Вас есть несколько ответвлений или если Вы боретесь против некоторого отсутствия функции или другого в Подрывной деятельности тогда, это могла бы быть хорошая идея переключиться. Но запрет серьезного основания переключить Вас должен, вероятно, избежать стоимости и хита производительности переключения систем управления исходным кодом.

8
задан Marcos Roriz Junior 17 November 2009 в 00:05
поделиться

4 ответа

См. ] Transloader о том, как копировать классы между ClassLoaders, если вам нужно выполнить одно из следующих действий:

  • Клонируйте почти любой граф объектов из одного ClassLoader в другой

  • Возьмите любой объект из внешнего ClassLoader и вызовите на нем любой метод без его клонирования

7
ответ дан 5 December 2019 в 20:17
поделиться

Если класс такой простой, как вы его описываете в вашем случае, вы можете посмотреть XMLEncoder . На его использование накладываются значительные ограничения, но в простых случаях он должен выполнять свою работу.

РЕДАКТИРОВАТЬ: Учитывая это ограничение, я бы сказал, поместите данные в карту и используйте ее. Вы даже можете заставить два класса хранить свое состояние на карте внутри, так что движение будет довольно плавным.

Если это не сработает, то похоже, что вы столкнулись с рулоном собственного XML / JSON или просто CSV, в зависимости от сложности данных.

0
ответ дан 5 December 2019 в 20:17
поделиться
[

] Я полагаю, что у него один и тот же класс (с тем же именем), но он загружен и определен двумя загрузчиками классов. Лучше всего исправить систему, чтобы класс не загружался и дважды.[

].
1
ответ дан 5 December 2019 в 20:17
поделиться

Загрузка классов PowerMock также обеспечивает что-то похожее на TransLoader и поддерживает более сложные варианты использования, такие как (некоторые) отражение. Вы можете легко запустить Runnable или Callable:

ClassloaderExecutor cle = new ClassloaderExecutor(classloader);
cle.execute(aRunnable); 
Object result = cle.execute(aCallable); // Result is cloned back to original CL

Взгляните на тестовый пример в репозитории svn.

Он также доступен в Maven:

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-classloading</artifactId>
    <version>1.4.6</version>
</dependency>  
0
ответ дан 5 December 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: