diff --git a/src/org/redkale/convert/DeMember.java b/src/org/redkale/convert/DeMember.java index 826351552..ebd84780c 100644 --- a/src/org/redkale/convert/DeMember.java +++ b/src/org/redkale/convert/DeMember.java @@ -26,6 +26,8 @@ public final class DeMember { protected int position; //从1开始 + protected int tag; //主要给protobuf使用 + protected final Attribute attribute; protected Decodeable decoder; @@ -84,6 +86,10 @@ public final class DeMember { return this.position; } + public int getTag() { + return this.tag; + } + public int compareTo(boolean fieldSort, DeMember o) { if (o == null) return -1; if (this.position != o.position) return (this.position == 0 ? Integer.MAX_VALUE : this.position) - (o.position == 0 ? Integer.MAX_VALUE : o.position); diff --git a/src/org/redkale/convert/ObjectDecoder.java b/src/org/redkale/convert/ObjectDecoder.java index 827fac59a..aed4973c1 100644 --- a/src/org/redkale/convert/ObjectDecoder.java +++ b/src/org/redkale/convert/ObjectDecoder.java @@ -178,6 +178,7 @@ public class ObjectDecoder implements Decodeable { while (pos.contains(++pidx)); member.position = pidx; } + initForEachDeMember(factory, member); } Arrays.sort(this.members, (a, b) -> a.compareTo(factory.isFieldSort(), b)); @@ -205,6 +206,13 @@ public class ObjectDecoder implements Decodeable { } } + protected void initForEachDeMember(ConvertFactory factory, DeMember member) { + } + + protected void setTag(DeMember member, int tag) { + member.tag = tag; + } + /** * 对象格式: [0x1][short字段个数][字段名][字段值]...[0x2] *