Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问转换器内的XStream对象_Java_Xstream - Fatal编程技术网

Java 如何访问转换器内的XStream对象

Java 如何访问转换器内的XStream对象,java,xstream,Java,Xstream,我有一个XStream实例,我在其中注册了一些转换器,并按照我希望的方式进行了一些配置 XStream xstream = new XStream(); xstream.registerConverter(new SomeConverter()); (...) 我有一个SomeConverter类,它实现了Converter 出于某种原因,我想访问转换器代码中的xstream对象 有没有办法从某个转换器方法/属性获取它,或者我必须从其他地方获取它?我相信XStream转换器不会将上下文存储到X

我有一个XStream实例,我在其中注册了一些转换器,并按照我希望的方式进行了一些配置

XStream xstream = new XStream();
xstream.registerConverter(new SomeConverter());
(...)
我有一个SomeConverter类,它实现了Converter

出于某种原因,我想访问转换器代码中的xstream对象


有没有办法从某个转换器方法/属性获取它,或者我必须从其他地方获取它?

我相信XStream转换器不会将上下文存储到XStream对象。这有助于耦合。当然,一个选项可以是声明构造函数参数并将xstream对象传递给它。但我认为更好的解决方案是从Xstream对象获取您需要的任何信息,并将其传递给自定义转换器,以便保持Xstream与其转换器之间的松散耦合

我相信Xstream转换器不会将上下文存储到Xstream对象。这有助于耦合。当然,一个选项可以是声明构造函数参数并将xstream对象传递给它。但我认为更好的解决方案是从Xstream对象获取您所需的任何信息,并将其传递给自定义转换器,以保持Xstream与其转换器之间的松散耦合

转换器只是一个接口,因此,没有任何东西阻止您将
SomeConverter
的构造函数更改为接受XStream对象。然后,您就可以使用实现的方法访问它。例如

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

Converter只是一个接口,因此没有任何东西可以阻止您更改
SomeConverter
的构造函数以接受XStream对象。然后,您就可以使用实现的方法访问它。例如

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

我确实需要xstream对象。我想动态更改转换器内的xstream默认别名配置。xstream知道它是注册的转换器,我想转换器应该有办法知道以某种方式调用他的xstream对象。我有一个类似的问题,我能找到的最好方法是使用xstream接受的ClassAliasingMapper作为参数来生成动态别名。但是,当然,您需要在映射和类之间具有唯一的一对一双向映射。也许这会对你有所帮助我确实需要xstream对象。我想动态更改转换器内的xstream默认别名配置。xstream知道它是注册的转换器,我想转换器应该有办法知道以某种方式调用他的xstream对象。我有一个类似的问题,我能找到的最好方法是使用xstream接受的ClassAliasingMapper作为参数来生成动态别名。但是,当然,您需要在映射和类之间具有唯一的一对一双向映射。也许这对你有帮助