我在Android上使用simpleXml对对象列表进行序列化/反序列化。以前,我每个人都有30个不同的对象,并且每个对象都有一个包含列表的相关类。为了减少重复的代码,我决定只使用带有@ElementListUnion注释的列表的类,如下所示:

@ElementListUnion({
    @ElementList(entry = "A", inline = true, type = A.class, required=false),
    @ElementList(entry = "B", inline = true, type = B.class, required=false),
    @ElementList(entry = "C", inline = true, type = C.class, required=false)
    })
private List<Object> serializableList;


当元素列表变大时,我注意到在android上反序列化的性能下降了。是否存在另一种形式可以使用另一种注释来执行此操作,或者我必须返回程序的旧实现?

注意:我列表中的所有元素都属于同一类型,serializableList可以是List<A>List<B>List<C>

谢谢

最佳答案

您可以这样注释类(包含列表):

@Root
public class Example
{
    @ElementList
    private List<Object> serializableList;

    // ...
}


和类(AB等):

@Default
public class A
{
    // ...
}


(或者:带有@Root的类以及带有@Element@ElementList,...的所需的每个元素)

通过这种方式,您可以将所需的所有内容放入列表中。

关于java - SimpleXml @ElementListUnion标记在Android上的性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14898865/

10-11 03:28