1
我调整了XStream的输出,并且我得到以下几点:如何使用XStream别名java.lang.Integer?
<entry>
<string>ahh</string>
<java-class>java.lang.Integer</java-class>
</entry>
所以我试图创建java.lang.Integer.class别名...不工作。我为其他许多类别提供了别名,并且工作得很好。我也试过别名int.class
;没有运气。
诀窍是什么?
谢谢!
编辑
我意识到这个问题不太清楚。我感兴趣的是而不是别名元素名称(XStream已经很好)。我想要别名元素中包含的数据。有没有像一个例子:
下面是测试我做:
import java.util.ArrayList;
import com.thoughtworks.xstream.XStream;
public class Main {
public static void main(String[] args) {
ArrayList<Class<?>> classes = new ArrayList<Class<?>>();
classes.add(Integer.class);
classes.add(Long.class);
classes.add(Double.class);
classes.add(Float.class);
ArrayList<Number> numbers = new ArrayList<Number>();
numbers.add(new Integer(3));
numbers.add(new Long(3));
numbers.add(new Double(3));
numbers.add(new Float(3));
XStream xml = new XStream();
xml.alias("inty", Integer.class);
xml.aliasType("inty", Integer.class);
xml.aliasPackage("jl", "java.lang");
System.out.println(xml.toXML(classes));
System.out.println(xml.toXML(numbers));
}
}
,输出:
<list>
<java-class>java.lang.Integer</java-class>
<java-class>java.lang.Long</java-class>
<java-class>java.lang.Double</java-class>
<java-class>java.lang.Float</java-class>
</list>
<list>
<int>3</int>
<long>3</long>
<double>3.0</double>
<float>3.0</float>
</list>
正如你所看到的,元素名称以及别名(第二列表),但如果我使用它作为数据,我找不到缩短类名称的方法。我尝试了大部分相关的XStream.alias *方法。我想是一样的东西(第一列表):
<list>
<java-class>int</java-class>
<java-class>long</java-class>
<java-class>double</java-class>
<java-class>float</java-class>
</list>
老实说,现在,我怀疑这是可能没有一个相当大的黑客,但我至少分享的想法。
如果.alias(字符串类)真的做什么,我觉得它和它说,它做什么(HTTP://xstream.codehaus .org/javadoc/com/thoughtworks/xstream/XStream.html#alias(java.lang.String,%20java.lang.Class)),是不是这个代码在许多名字中无意义地重复使用同一个类?这是我尝试过的一件事,我很好奇看到这段代码生成的输出。 – Joanis 2010-02-03 21:29:39
我不知道它不是我的代码,我只是用它作为例子来回答你的问题。 – Woot4Moo 2010-02-03 21:40:50
这就是我所想的,无论如何,谢谢你!我知道在之前的版本中,XStream有“问题”,因为(un)boxing和类似的东西,你必须别名int.class而不是Integer.class。我想这可能是一些需要解决的问题。 – Joanis 2010-02-03 22:02:19