我有一个 XStream 实例,我在其中注册了一些转换器并按照我想要的方式进行了一些配置。
XStream xstream = new XStream();
xstream.registerConverter(new SomeConverter());
(...)
我有一个实现转换器的 SomeConverter 类。
出于某种原因,我想访问转换器代码中的 xstream 对象。
有没有办法从一些转换器方法/属性中获取它,或者我必须从其他地方获取它?
Converter 只是一个接口,因此没有什么可以阻止您更改构造函数SomeConverter
以接收 XStream 对象。然后,您将可以使用已实现的方法访问它。例如
XStream xstream = new XStream();
xstream.registerConverter(new SomeConverter(xstream));
我相信 XStream 转换器不会将上下文存储到 xstream 对象。这有助于耦合。当然,一种选择是声明一个构造函数参数并将 xstream 对象传递给它。但我认为更好的解决方案是从 Xstream 对象获取有关您需要的任何信息并将其传递给自定义转换器,以保持 XStream 与其转换器之间的松散耦合