From 9f9078cdc5e480b674e234a6e2853c3f8fba77a0 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Mon, 16 Jul 2018 00:33:45 +0800 Subject: [PATCH] --- src/org/redkale/convert/DeMember.java | 13 ++++++++----- src/org/redkale/convert/EnMember.java | 13 ++++++++----- src/org/redkale/convert/ObjectDecoder.java | 8 +++++--- src/org/redkale/convert/ObjectEncoder.java | 6 ++++-- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/org/redkale/convert/DeMember.java b/src/org/redkale/convert/DeMember.java index 3dd077619..e6acf6d03 100644 --- a/src/org/redkale/convert/DeMember.java +++ b/src/org/redkale/convert/DeMember.java @@ -20,11 +20,11 @@ import org.redkale.util.Attribute; * @param 字段的数据类型 */ @SuppressWarnings("unchecked") -public final class DeMember implements Comparable> { +public final class DeMember { protected int index; - protected boolean fieldSort; + protected int position; //从1开始 protected final Attribute attribute; @@ -76,8 +76,11 @@ public final class DeMember implements Comparable o) { + public int getPosition() { + return this.position; + } + + public int compareTo(boolean fieldSort, DeMember o) { if (o == null) return -1; if (this.index != o.index) return (this.index == 0 ? Integer.MAX_VALUE : this.index) - (o.index == 0 ? Integer.MAX_VALUE : o.index); return fieldSort ? this.attribute.field().compareTo(o.attribute.field()) : 0; @@ -88,7 +91,7 @@ public final class DeMember implements Comparable 字段的数据类型 */ @SuppressWarnings("unchecked") -public final class EnMember implements Comparable> { +public final class EnMember { final Attribute attribute; @@ -33,7 +33,7 @@ public final class EnMember implements Comparable attribute, Encodeable encoder) { this.attribute = attribute; @@ -69,8 +69,11 @@ public final class EnMember implements Comparable o) { + public int getPosition() { + return this.position; + } + + public int compareTo(boolean fieldSort, EnMember o) { if (o == null) return -1; if (this.index != o.index) return (this.index == 0 ? Integer.MAX_VALUE : this.index) - (o.index == 0 ? Integer.MAX_VALUE : o.index); return fieldSort ? this.attribute.field().compareTo(o.attribute.field()) : 0; @@ -81,7 +84,7 @@ public final class EnMember implements Comparable implements Decodeable[] creatorConstructorMembers = new DeMember[0]; - protected DeMember[] members; + protected DeMember[] members; protected ConvertFactory factory; @@ -97,7 +97,6 @@ public final class ObjectDecoder implements Decodeable implements Decodeable a.compareTo(factory.isFieldSort(), b)); + for (int i = 0; i < this.members.length; i++) { + this.members[i].position = (i + 1); + } if (cps != null) { final String[] fields = cps; diff --git a/src/org/redkale/convert/ObjectEncoder.java b/src/org/redkale/convert/ObjectEncoder.java index 39c05783b..9ae096f51 100644 --- a/src/org/redkale/convert/ObjectEncoder.java +++ b/src/org/redkale/convert/ObjectEncoder.java @@ -104,12 +104,14 @@ public final class ObjectEncoder implements Encodeable a.compareTo(factory.isFieldSort(), b)); + for (int i = 0; i < this.members.length; i++) { + this.members[i].position = (i + 1); + } } catch (Exception ex) { throw new ConvertException(ex);