Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使空ArrayList不序列化变得简单?_Java_Xml_Jaxb_Simple Framework - Fatal编程技术网

Java 如何使空ArrayList不序列化变得简单?

Java 如何使空ArrayList不序列化变得简单?,java,xml,jaxb,simple-framework,Java,Xml,Jaxb,Simple Framework,您好,假设我有班上的人: @Root(name="Person") public class Person { @Element(name="Name") public String name = "MyName" @ElementList(name="AddressList", entry="Address", required=false) public ArrayList<Address> addressList = new ArrayList<>

您好,假设我有班上的人:

@Root(name="Person")
public class Person {

  @Element(name="Name")
  public String name = "MyName"

  @ElementList(name="AddressList", entry="Address", required=false)
  public ArrayList<Address> addressList = new ArrayList<>();

}
当addressList没有项时,Simple生成此XML:

<Person>
  <Name>MyName</Name>
  <AddressList/>
</Person>

我的名字
请问,如果列表中没有项目,我如何简单地省略标记地址列表?在这种情况下,我希望XML如下所示:

<Person>
  <Name>MyName</Name>
</Person>

我的名字
先谢谢你


更新:我忘了提到我不想将addressList设置为null。当我创建Person对象时,我希望对addressList进行初始化,以便在需要时可以轻松添加地址,而不需要检查它是否为null并实例化它。上面的示例非常简单,但是当我的对象层次结构更复杂时,检查和初始化所有列表是不方便的。所以我希望我可以使用一些anotation或自定义转换器来解决这个问题。

可能尝试不设置地址列表。保持为空。

可能尝试不设置地址列表。保持为空。

可能尝试不设置地址列表。保持为空。

可能尝试不设置地址列表。保持空值。

我认为将空值指定给列表将起作用,如果这是您的一个选项

好吧,因为这不是一个选项,可能类似于

    public void addCustomer(Customer c) {
        if (this.customerList == null) {
            this.customerList = new ArrayList<Customer>();
        }
        customerList.add(c);
    }
public void addCustomer(客户c){
if(this.customerList==null){
this.customerList=新的ArrayList();
}
客户列表。添加(c);
}
可能会成功吗


我认为,不赋值null将导致XML中出现一个空标记。这就是空列表和空列表之间的区别。

我认为将空列表分配给列表将起作用,如果这是您的一个选项

好吧,因为这不是一个选项,可能类似于

    public void addCustomer(Customer c) {
        if (this.customerList == null) {
            this.customerList = new ArrayList<Customer>();
        }
        customerList.add(c);
    }
public void addCustomer(客户c){
if(this.customerList==null){
this.customerList=新的ArrayList();
}
客户列表。添加(c);
}
可能会成功吗


我认为,不赋值null将导致XML中出现一个空标记。这就是空列表和空列表之间的区别。

我认为将空列表分配给列表将起作用,如果这是您的一个选项

好吧,因为这不是一个选项,可能类似于

    public void addCustomer(Customer c) {
        if (this.customerList == null) {
            this.customerList = new ArrayList<Customer>();
        }
        customerList.add(c);
    }
public void addCustomer(客户c){
if(this.customerList==null){
this.customerList=新的ArrayList();
}
客户列表。添加(c);
}
可能会成功吗


我认为,不赋值null将导致XML中出现一个空标记。这就是空列表和空列表之间的区别。

我认为将空列表分配给列表将起作用,如果这是您的一个选项

好吧,因为这不是一个选项,可能类似于

    public void addCustomer(Customer c) {
        if (this.customerList == null) {
            this.customerList = new ArrayList<Customer>();
        }
        customerList.add(c);
    }
public void addCustomer(客户c){
if(this.customerList==null){
this.customerList=新的ArrayList();
}
客户列表。添加(c);
}
可能会成功吗


我认为,不赋值null将导致XML中出现一个空标记。这就是空列表和空列表之间的区别。

使用@Resolve和@Replace注释,您可以在这里进行操作

@Replace
private Object writeReplace() {
   return new InstanceWithANullList();
}
然后

@Resolve
private Object readResolve() {
   return new InstanceWithANonNullList();
}

在这里可以使用@Resolve和@Replace注释

@Replace
private Object writeReplace() {
   return new InstanceWithANullList();
}
然后

@Resolve
private Object readResolve() {
   return new InstanceWithANonNullList();
}

在这里可以使用@Resolve和@Replace注释

@Replace
private Object writeReplace() {
   return new InstanceWithANullList();
}
然后

@Resolve
private Object readResolve() {
   return new InstanceWithANonNullList();
}

在这里可以使用@Resolve和@Replace注释

@Replace
private Object writeReplace() {
   return new InstanceWithANullList();
}
然后

@Resolve
private Object readResolve() {
   return new InstanceWithANonNullList();
}

您是否尝试过将arraylist初始化为null,如果您想添加一些内容,那么只需为第一个元素初始化它?谢谢您的回复,我忘了提到我不想将addressList设置为null。我更新了我的问题。您是否尝试过将arraylist初始化为null,如果您想添加一些内容,则只需为第一个元素初始化它?谢谢您的回答,我忘了提到我不想将addressList设置为null。我更新了我的问题。您是否尝试过将arraylist初始化为null,如果您想添加一些内容,则只需为第一个元素初始化它?谢谢您的回答,我忘了提到我不想将addressList设置为null。我更新了我的问题。您是否尝试过将arraylist初始化为null,如果您想添加一些内容,则只需为第一个元素初始化它?谢谢您的回答,我忘了提到我不想将addressList设置为null。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。