From 89ad9767440b233b4d4b0fb3c345e2f54fc0685c Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Sun, 15 Oct 2017 22:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0BigDecimal=E7=9A=84=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E5=92=8C=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/convert/ConvertFactory.java | 3 +- .../convert/ext/BigDecimalSimpledCoder.java | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/org/redkale/convert/ext/BigDecimalSimpledCoder.java diff --git a/src/org/redkale/convert/ConvertFactory.java b/src/org/redkale/convert/ConvertFactory.java index dd3034078..3800c2267 100644 --- a/src/org/redkale/convert/ConvertFactory.java +++ b/src/org/redkale/convert/ConvertFactory.java @@ -7,7 +7,7 @@ package org.redkale.convert; import java.io.File; import java.lang.reflect.*; -import java.math.BigInteger; +import java.math.*; import java.net.*; import java.nio.ByteBuffer; import java.nio.channels.CompletionHandler; @@ -89,6 +89,7 @@ public abstract class ConvertFactory { this.register(CharSequence.class, CharSequenceSimpledCoder.instance); this.register(java.util.Date.class, DateSimpledCoder.instance); this.register(BigInteger.class, BigIntegerSimpledCoder.instance); + this.register(BigDecimal.class, BigDecimalSimpledCoder.instance); this.register(InetAddress.class, InetAddressSimpledCoder.instance); this.register(DLong.class, DLongSimpledCoder.instance); this.register(Class.class, TypeSimpledCoder.instance); diff --git a/src/org/redkale/convert/ext/BigDecimalSimpledCoder.java b/src/org/redkale/convert/ext/BigDecimalSimpledCoder.java new file mode 100644 index 000000000..07aa95aa7 --- /dev/null +++ b/src/org/redkale/convert/ext/BigDecimalSimpledCoder.java @@ -0,0 +1,44 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.convert.ext; + +import org.redkale.convert.SimpledCoder; +import org.redkale.convert.Writer; +import org.redkale.convert.Reader; +import java.math.BigDecimal; +import org.redkale.util.Utility; + +/** + * BigDecimal 的SimpledCoder实现 + * + *

+ * 详情见: https://redkale.org + * + * @author zhangjx + * @param Reader输入的子类型 + * @param Writer输出的子类型 + */ +public final class BigDecimalSimpledCoder extends SimpledCoder { + + public static final BigDecimalSimpledCoder instance = new BigDecimalSimpledCoder(); + + @Override + public void convertTo(W out, BigDecimal value) { + if (value == null) { + out.writeNull(); + return; + } + out.writeSmallString(value.toString()); + } + + @Override + public BigDecimal convertFrom(R in) { + String value = in.readSmallString(); + if (value == null) return null; + return new BigDecimal(Utility.charArray(value)); + } + +}