扩展ArrayList的类未正确序列化

时间:2018-11-01 02:31:15

标签: java generics polymorphism

我想创建一个行为类似于数组列表的自定义列表,只是它具有一个附加属性。我创建了CustomList类,并在CustomListTest类中进行了测试。但是,问题在于在json序列化中没有显示额外的属性。因此,下面的代码仅打印出[1,2,3]。有没有一种方法可以使属性也包含在序列化中?

import java.util.ArrayList;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;


public class CustomList<T> extends ArrayList<T> {
    private boolean attribute = false;
}

public class CustomListTest {
    public static void main(String[] args) throws JsonProcessingException {
        CustomList<Integer> a = new CustomList<Integer>();

        a.add(1);
        a.add(2);
        a.add(3);

        ObjectMapper mapper = new ObjectMapper();

        System.out.println(mapper.writeValueAsString(a));
    }
}

1 个答案:

答案 0 :(得分:0)

问题是没有名称列表的字段。在JSON中,您无法将属性添加到数组。如果要获取序列化表格 {“ attribute”:false,“ list”:[]},则需要这样的Java对象:

private static class ComposeList<T> {
  boolean attribute = false;
  ArrayList<T> list = new ArrayList<>();
}
希利斯已经说过:“优先考虑组成而不是继承”。这是Java中的一般规则。继承使设计通常不灵活。