-
Notifications
You must be signed in to change notification settings - Fork 22
dynamicSize 属性详解
ray.zh edited this page Apr 19, 2023
·
6 revisions
V2.1.0版本新增属性
此属性和 dynamicSizeOf
属性功能大致相同, 用于节省传输流量。
dynamicSizeOf
依赖于其他字段来标明当前成员数量, 而 dynamicSize
是通过反推来计算出当前成员数量的(当然这需要满足一定条件)。
dynamicSize
属性用于兼容一些老的报文协议。一般不建议使用此属性。且此属性仅能适用于String
, Array
, List
public class Teacher {
@MagicField(order = 1)
private int id;
// 自动裁剪和包装, 此字段成员数最大 5 个
@MagicField(order = 2, dynamicSize = true, size = 5)
private List<Student> students;
@MagicField(order = 3)
private int name;
}
如上述数据结构, 如当 Student 对象中所有属性都是固定长度的字段时, 其成员数量可以通过总字节数倒推。
即:students
属性成员数量 = (总字节数 - 属性sizeOfstucent
字节数 - 属性name
字节数) / 单个Student
属性字节数
所以 dynamicSize
字段属性标记时, 需要保证整个数据结构只有当前字段长度可变,如此才能反推。
若大家在使用过程中有疑问,可以参考右边的目录列表进行查询