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。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。谢谢你的回复,我忘了提到我不想将地址列表设置为空。我更新了我的问题。