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