Skip to content

List&Array支持情况

ray.zh edited this page Dec 2, 2023 · 5 revisions

实际项目使用中, 一般都不仅仅为一个对象的。 而且很多涉及到多个对象进行传递。 所以框架是支持 List & Array 来进行嵌套组合的。

如下类的定义:

@MagicClass(byteOrder = ByteOrder.BIG_ENDIAN)
public class Teacher {
    @MagicField(order = 1)
    private int id;
    @MagicField(order = 3, size = 10)
    private String name;
    @MagicField(order = 5)
    private int phoneSize;
    @MagicField(order = 7, dynamicSizeOf = "phoneSize")
    private long[] phones;
    // setter getter
}

框架关于集合的支持情况如下:

  • 仅支持List&Array
  • 不支持一维以上数组,如int[][]或者 List<List> 容器嵌套
  • 由于String本就不是定长,所以不支持String[]List<String>
  • 支持自定义的数据类型
  • 不支持MAP

关于数组的最佳实践:

  • 涉及到数组最好使用变长, 即协议中携带数组长度数据
  • 如果不是动态数组, 则大小必须指定