diff --git a/src/org/redkale/convert/ObjectDecoder.java b/src/org/redkale/convert/ObjectDecoder.java index 7afb614c8..7ad1f5e61 100644 --- a/src/org/redkale/convert/ObjectDecoder.java +++ b/src/org/redkale/convert/ObjectDecoder.java @@ -221,14 +221,16 @@ public class ObjectDecoder implements Decodeable { } if (this.creatorConstructorMembers == null) { //空构造函数 final T result = this.creator.create(); + boolean first = true; while (hasNext(in)) { DeMember member = in.readFieldName(members); in.readBlank(); if (member == null) { in.skipValue(); //跳过不存在的属性的值 } else { - readMemberValue(in, member, result); + readMemberValue(in, member, first, result); } + first = false; } in.readObjectE(typeClass); return result; @@ -237,13 +239,14 @@ public class ObjectDecoder implements Decodeable { final Object[] constructorParams = new Object[fields.length]; final Object[][] otherParams = new Object[this.members.length][2]; int oc = 0; + boolean first = true; while (hasNext(in)) { DeMember member = in.readFieldName(members); in.readBlank(); if (member == null) { in.skipValue(); //跳过不存在的属性的值 } else { - Object val = readMemberValue(in, member); + Object val = readMemberValue(in, member, first); boolean flag = true; for (int i = 0; i < fields.length; i++) { if (member == fields[i]) { @@ -254,6 +257,7 @@ public class ObjectDecoder implements Decodeable { } if (flag) otherParams[oc++] = new Object[]{member.attribute, val}; } + first = false; } in.readObjectE(typeClass); final T result = this.creator.create(constructorParams); @@ -264,15 +268,15 @@ public class ObjectDecoder implements Decodeable { } } - protected boolean hasNext(Reader in) { + protected boolean hasNext(R in) { return in.hasNext(); } - protected Object readMemberValue(Reader in, DeMember member) { + protected Object readMemberValue(R in, DeMember member, boolean first) { return member.read(in); } - protected void readMemberValue(Reader in, DeMember member, T result) { + protected void readMemberValue(R in, DeMember member, boolean first, T result) { member.read(in, result); }