当前位置: 首页 > 知识库问答 >
问题:

类型ad子类型的XStream集合

景品
2023-03-14
class A{
//pojo
}
class B extends {
// pojo
}
class C{
@XStreamImplicit( itemFieldName="A")
private ArrayList<A> aList = null;
}
<c>
 <aList>
  <a/>
  <a/>
 </aList>
</c> 
<c>
 <aList>
  <a/>
  <b/>
 </aList>
</c> 

共有1个答案

长孙泉
2023-03-14

这对我有用:

@XStreamAlias("a")
public class A {

}

@XStreamAlias("b")
public class B extends A {

}

@XStreamAlias("c")
public class C {
    private ArrayList<A> aList = null;

    public C() {
        aList = new ArrayList<A>();
        aList.add(new A());
        aList.add(new B());
        aList.add(new A());
    }

    public static void main(String[] args) {
        C c = new C();

        XStream x = new XStream();
        x.processAnnotations(A.class);
        x.processAnnotations(B.class);
        x.processAnnotations(C.class);

        System.out.println(x.toXML(c));
    }

}

并产生:

<c>
  <aList>
    <a/>
    <b/>
    <a/>
  </aList>
</c>

如果不想为每个可能的类调用processAnnotations,可以使用反射API编写一些动态代码,并在循环中处理所有类。

 类似资料:
  • 问题内容: 假设class 扩展class 。我碰巧知道 只 包含的实例。有什么方法可以将转换为吗? 看来我唯一的选择是遍历集合,一次转换一个元素,创建一个新集合。鉴于类型擦除使得这在运行时完全不必要,这似乎完全浪费了资源。 问题答案: 您可以通过无类型的List界面进行强制转换:

  • 我是新手。我正在开发一个测验应用程序,并拥有以下三个dart文件: 主要的飞奔 question.dart answer.dart 当我在android studio中的android上运行应用程序时,出现以下错误: ══╡ 小部件库捕获的异常╞═══════════════════════════════════════════ 生成MyApp时引发了以下类型的错误(脏,状态:_MyAppSta

  • 在存储到本地数据库之前,将字符串转换为对象的正确方法是什么? 这是的输出: 我试图将其转换为CreatedBy对象 创造的 这里是我的本地表列 错误

  • 我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模

  • 我是个新手。当我运行代码时,我得到一个错误:“Future”类型不是“List”类型的子类型。如果我改变屏幕,我将得到错误:NoSuchMethodError:方法“map”被调用为null。我怎样才能解决它?谢谢你帮助我。

  • 我从Firestore示例中复制了一段代码: 但是我得到了这个错误 这里出了什么问题?