This commit is contained in:
@@ -221,16 +221,14 @@ public class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T> {
|
|||||||
}
|
}
|
||||||
if (this.creatorConstructorMembers == null) { //空构造函数
|
if (this.creatorConstructorMembers == null) { //空构造函数
|
||||||
final T result = this.creator.create();
|
final T result = this.creator.create();
|
||||||
boolean first = true;
|
|
||||||
while (hasNext(in)) {
|
while (hasNext(in)) {
|
||||||
DeMember member = in.readFieldName(members);
|
DeMember member = in.readFieldName(members);
|
||||||
in.readBlank();
|
in.readBlank();
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
in.skipValue(); //跳过不存在的属性的值
|
in.skipValue(); //跳过不存在的属性的值
|
||||||
} else {
|
} else {
|
||||||
readMemberValue(in, member, first, result);
|
readMemberValue(in, member, result);
|
||||||
}
|
}
|
||||||
first = false;
|
|
||||||
}
|
}
|
||||||
in.readObjectE(typeClass);
|
in.readObjectE(typeClass);
|
||||||
return result;
|
return result;
|
||||||
@@ -239,14 +237,13 @@ public class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T> {
|
|||||||
final Object[] constructorParams = new Object[fields.length];
|
final Object[] constructorParams = new Object[fields.length];
|
||||||
final Object[][] otherParams = new Object[this.members.length][2];
|
final Object[][] otherParams = new Object[this.members.length][2];
|
||||||
int oc = 0;
|
int oc = 0;
|
||||||
boolean first = true;
|
|
||||||
while (hasNext(in)) {
|
while (hasNext(in)) {
|
||||||
DeMember member = in.readFieldName(members);
|
DeMember member = in.readFieldName(members);
|
||||||
in.readBlank();
|
in.readBlank();
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
in.skipValue(); //跳过不存在的属性的值
|
in.skipValue(); //跳过不存在的属性的值
|
||||||
} else {
|
} else {
|
||||||
Object val = readMemberValue(in, member, first);
|
Object val = readMemberValue(in, member);
|
||||||
boolean flag = true;
|
boolean flag = true;
|
||||||
for (int i = 0; i < fields.length; i++) {
|
for (int i = 0; i < fields.length; i++) {
|
||||||
if (member == fields[i]) {
|
if (member == fields[i]) {
|
||||||
@@ -257,7 +254,6 @@ public class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T> {
|
|||||||
}
|
}
|
||||||
if (flag) otherParams[oc++] = new Object[]{member.attribute, val};
|
if (flag) otherParams[oc++] = new Object[]{member.attribute, val};
|
||||||
}
|
}
|
||||||
first = false;
|
|
||||||
}
|
}
|
||||||
in.readObjectE(typeClass);
|
in.readObjectE(typeClass);
|
||||||
final T result = this.creator.create(constructorParams);
|
final T result = this.creator.create(constructorParams);
|
||||||
@@ -272,11 +268,11 @@ public class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T> {
|
|||||||
return in.hasNext();
|
return in.hasNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Object readMemberValue(R in, DeMember member, boolean first) {
|
protected Object readMemberValue(R in, DeMember member) {
|
||||||
return member.read(in);
|
return member.read(in);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void readMemberValue(R in, DeMember member, boolean first, T result) {
|
protected void readMemberValue(R in, DeMember member, T result) {
|
||||||
member.read(in, result);
|
member.read(in, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user