From 32a595262db5dd955e23b5de48fdbc9a66d36949 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Sun, 22 Jul 2018 18:03:30 +0800 Subject: [PATCH] --- src/org/redkale/convert/ObjectDecoder.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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); }