xstream正在转换&(xstream is converting & to & when converting from xml to Java Objects)
xstream正在转换
&
to&
when从xml转换为Java Objects时。 我不希望这种情况发生。 我该怎么办?XStream xstream = new XStream(new DomDriver()); xstream.processAnnotations(HelpConfigVO.class); xstream.processAnnotations(ProductVO.class); xstream.processAnnotations(PackageVO.class); xstream.addImplicitCollection(HelpConfigVO.class, "packages"); configVO = (HelpConfigVO)xstream.fromXML(helpConfigData);
其次,我从xstream获得的输出XML没有格式化。 如何格式化我的xml以使其可读?
xstream is converting
&
to&
when converting from xml to Java Objects. I don't want this to happen. How shall I do it?XStream xstream = new XStream(new DomDriver()); xstream.processAnnotations(HelpConfigVO.class); xstream.processAnnotations(ProductVO.class); xstream.processAnnotations(PackageVO.class); xstream.addImplicitCollection(HelpConfigVO.class, "packages"); configVO = (HelpConfigVO)xstream.fromXML(helpConfigData);
Secondly, The output XML I am getting from xstream is not formatted. How do I format my xml to make it readable?
原文:https://stackoverflow.com/questions/8941911
最满意答案
如果你考虑可能分配给它的东西,一切都是有意义的。
List<? super Number> list1 = new ArrayList<Object>(); // works List<? super Number> list1 = new ArrayList<Number>(); // works List<? super Number> list1 = new ArrayList<Integer>(); // doesn't work
任何在右侧工作的东西都会接受
Double
。List<? super Integer> list = new ArrayList<Object>(); // works List<? super Integer> list = new ArrayList<Number>(); // works List<? super Integer> list = new ArrayList<Integer>(); // works
任何你可以分配给
list1
你也可以分配给list
。 所以list = list1
工作得很好。 但并非所有可以分配给list
的东西都会接受Double
,所以它不能编译。Everything makes sense if you consider the possible things you could assign to it.
List<? super Number> list1 = new ArrayList<Object>(); // works List<? super Number> list1 = new ArrayList<Number>(); // works List<? super Number> list1 = new ArrayList<Integer>(); // doesn't work
Anything that works on the right hand side will accept a
Double
.List<? super Integer> list = new ArrayList<Object>(); // works List<? super Integer> list = new ArrayList<Number>(); // works List<? super Integer> list = new ArrayList<Integer>(); // works
Anything that you could assign to
list1
you could also assign tolist
. Solist = list1
works just fine. But not all of the things you could assign tolist
will accept aDouble
, so it doesn't compile.
相关问答
更多-
这意味着该类不必extend Shape ,即extend Shape的直接子类。 它也可以是Shape本身,或者它可以是Shape的间接子类,或者Shape可以是类implements的interface 。 作者试图传达的是关键字extends是出于方便而使用(在语言中添加新关键字是昂贵的)和熟悉度,并不意味着每个可以使用的类型都必须具有完全字符串extends Shape在其定义中。 换句话说:作者的字面意思是“字面上”与“字面意思”。 It means that the class does not ...
-
这取决于你需要做什么 如果你想做这样的事情,你需要使用有界类型的参数: public
void addIfPretty(List shapes, T shape) { if (shape.isPretty()) { shapes.add(shape); } } 这里我们有一个List shapes和一个T shape ,所以我们可以安全地shapes.add(shape) 。 如果它被声明为List extends Shap ... -
Java中的有界通配符(Bounded Wildcards in Java)[2024-01-25]
你可以使用这个: List extends List extends Number>> a; List- > b;
a = b;
You could use this: List extends List extends Number>> a;
List
- > b;
a = b;
-
java中下界有界的通配符(Lower bounded wildcards in java)[2023-06-17]
如果你考虑可能分配给它的东西,一切都是有意义的。 List super Number> list1 = new ArrayList -
首先,您不应将通配符类型参数与可变性混淆。 在List的元素类型中使用通配符不会阻止修改,它只对您可以对列表执行的操作施加一些实际限制。 将列表声明为List extends Number> List extends Number>表示引用的列表具有Number的实际元素类型或Number的子类,例如它可以是List
或List 。 因此,您无法添加任意Number实例,因为您无法知道它是否与实际的元素类型兼容。 但是您仍然可以添加null ,因为已知null引用与所 ... -
由于您的方法readXML(Map
companies)可以接受公司,员工和位置类型的V 你可以用下面提到的方法解决这个问题。 您可以使所有提到的类扩展新类,或者可以使用它来实现我们的自定义Type接口,并将该类型用于V或 在调用api的同时向方法添加附加参数,该方法向其发送Class信息。 public Map readXML(Map values, Class clazz) { if(clazz == I ... -
在Java中,子类应该像基类一样运行并且可能扩展行为 - 使用您提出的签名,例如,只能对仅使用Integer的Comparator检查Integer数组,而不能通过使用Number的Comparator检查。 此下限仅扩展了该方法的可能用例,因为它扩展了可能的Comparator对象的数量以供重用。 In Java, subclasses ought to behave like base classes and possibly extend behavior - using your proposed ...
-
有界通配符没有编译(Bounded wildcards not compiling)[2023-08-07]
Object#getClass()的返回类型是 实际的结果类型是Class extends |X|> Class extends |X|> where |X| 是擦除调用getClass的表达式的静态类型。 删除静态类型的p (调用getClass的表达式)是擦除 P extends InterfaceA & InterfaceB 这是InterfaceA 。 这在关于类型擦除的Java语言规范章节中指定 类型变量(第4.4节)的擦除是其最左边界的擦除。 你的方法接受一个Class exten ... -
toArray()返回Object[] ,有一个toArray(T[] a)的重载版本,它将给出所需的结果,就像使用它一样 return shapeResult.toArray(new Shape[shapeResult.size()]); toArray() returns Object[], there is a overloaded version of toArray(T[] a) which will give the desired result, use it like return sha ...