diff --git a/src/org/redkale/convert/ext/DLongSimpledCoder.java b/src/org/redkale/convert/ext/DLongSimpledCoder.java index d0f8844d5..d98daad09 100644 --- a/src/org/redkale/convert/ext/DLongSimpledCoder.java +++ b/src/org/redkale/convert/ext/DLongSimpledCoder.java @@ -36,7 +36,7 @@ public final class DLongSimpledCoder extends public DLong convertFrom(R in) { byte[] bs = bsSimpledCoder.convertFrom(in); if (bs == null) return null; - return new DLong(bs); + return DLong.create(bs); } } diff --git a/src/org/redkale/convert/json/DLongJsonSimpledCoder.java b/src/org/redkale/convert/json/DLongJsonSimpledCoder.java index a68019866..3c2770f4d 100644 --- a/src/org/redkale/convert/json/DLongJsonSimpledCoder.java +++ b/src/org/redkale/convert/json/DLongJsonSimpledCoder.java @@ -29,6 +29,6 @@ public class DLongJsonSimpledCoder extends JsonSimpledCoder { public DLong convertFrom(JsonReader in) { final String str = in.readString(); if (str == null) return null; - return new DLong(Utility.hexToBin(str)); + return DLong.create(Utility.hexToBin(str)); } } diff --git a/src/org/redkale/net/sncp/Sncp.java b/src/org/redkale/net/sncp/Sncp.java index 9536e71a8..fe6fffe05 100644 --- a/src/org/redkale/net/sncp/Sncp.java +++ b/src/org/redkale/net/sncp/Sncp.java @@ -95,7 +95,7 @@ public abstract class Sncp { synchronized (md5) { bytes = md5.digest(bytes); } - return new DLong(bytes); + return DLong.create(bytes); } public static boolean isRemote(Service service) { diff --git a/src/org/redkale/util/DLong.java b/src/org/redkale/util/DLong.java index 8f439ae3f..7cf402dc8 100644 --- a/src/org/redkale/util/DLong.java +++ b/src/org/redkale/util/DLong.java @@ -27,7 +27,7 @@ public final class DLong extends Number implements Comparable { (byte) (v2 >> 24), (byte) (v2 >> 16), (byte) (v2 >> 8), (byte) v2}; } - public DLong(byte[] bytes) { + protected DLong(byte[] bytes) { if (bytes == null || bytes.length != 16) throw new NumberFormatException("Not 16 length bytes"); this.bytes = bytes; } @@ -40,6 +40,11 @@ public final class DLong extends Number implements Comparable { return bytes; } + public static DLong create(byte[] bytes) { + if (ZERO.equals(bytes)) return ZERO; + return new DLong(bytes); + } + public static DLong read(ByteBuffer buffer) { byte[] bs = new byte[16]; buffer.get(bs); @@ -71,7 +76,7 @@ public final class DLong extends Number implements Comparable { @Override public String toString() { - if(this == ZERO) return "0"; + if (this == ZERO) return "0"; return new String(Utility.binToHex(bytes)); }