Как получить доступ к объекту XStream внутри конвертера - PullRequest
0 голосов
/ 29 сентября 2010

У меня есть экземпляр XStream, где я зарегистрировал несколько конвертеров и выполнил некоторую конфигурацию так, как я хочу, чтобы все работало.

XStream xstream = new XStream();
xstream.registerConverter(new SomeConverter());
(...)

И у меня есть класс SomeConverter, который реализует Converter.

По какой-то причине я хотел бы получить доступ к объекту xstream внутри кода конвертера.

Есть ли способ получить его из какого-либо метода / атрибута Конвертера, или мне придется получить его откуда-то еще?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Converter - это просто интерфейс, так что ничто не мешает вам изменить конструктор SomeConverter на объект XStream.Тогда у вас будет доступ к нему с вашими реализованными методами.Например,

XStream xstream = new XStream();
xstream.registerConverter(new SomeConverter(xstream));  
1 голос
/ 29 сентября 2010

Я считаю, что конвертеры XStream не сохраняют контекст для объекта xstream. Это помогает с соединением. Конечно, одним из вариантов может быть объявление аргумента конструктора и передача ему объекта xstream. Но я думаю, что лучшим решением было бы получить информацию обо всем, что вам нужно, от объекта Xstream и передать ее пользовательскому преобразователю, чтобы поддерживать слабую связь между XStream и его преобразователями

...