diff --git a/CHANGELOG.md b/CHANGELOG.md
index dcd82df10..9acdb6a36 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,9 @@
## 5.1.6
### 新特性
+* 【core 】 NumberUtil.decimalFormat增加Object对象参数支持
+* 【core 】 增加ReflectUtil.getFieldValue支持Alias注解
+
### Bug修复
-------------------------------------------------------------------------------------------------------------
diff --git a/hutool-core/src/main/java/cn/hutool/core/annotation/Alias.java b/hutool-core/src/main/java/cn/hutool/core/annotation/Alias.java
index 9c98d8efa..4ed9bb07e 100644
--- a/hutool-core/src/main/java/cn/hutool/core/annotation/Alias.java
+++ b/hutool-core/src/main/java/cn/hutool/core/annotation/Alias.java
@@ -16,5 +16,11 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface Alias {
+
+ /**
+ * 别名值,即使用此注解要替换成的别名名称
+ *
+ * @return 别名值
+ */
String value();
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanDesc.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanDesc.java
index 86e79ce71..3e485b450 100644
--- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanDesc.java
+++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanDesc.java
@@ -8,6 +8,7 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
+import cn.hutool.core.annotation.Alias;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.CaseInsensitiveMap;
import cn.hutool.core.util.BooleanUtil;
@@ -321,11 +322,21 @@ public class BeanDesc implements Serializable{
}
/**
- * 获取字段名
+ * 获取字段名,如果存在{@link Alias}注解,读取注解的值作为名称
*
* @return 字段名
*/
public String getFieldName() {
+ return ReflectUtil.getFieldName(this.field);
+ }
+
+ /**
+ * 获取字段名称
+ *
+ * @return 字段名
+ * @since 5.1.6
+ */
+ public String getRawFieldName() {
return null == this.field ? null : this.field.getName();
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java
index 27dbf4728..f328267db 100644
--- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java
@@ -1,5 +1,21 @@
package cn.hutool.core.bean;
+import cn.hutool.core.bean.BeanDesc.PropDesc;
+import cn.hutool.core.bean.copier.BeanCopier;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.bean.copier.ValueProvider;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Editor;
+import cn.hutool.core.lang.Filter;
+import cn.hutool.core.map.CaseInsensitiveMap;
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ClassUtil;
+import cn.hutool.core.util.ModifierUtil;
+import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.core.util.StrUtil;
+
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
@@ -14,23 +30,6 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import cn.hutool.core.bean.BeanDesc.PropDesc;
-import cn.hutool.core.bean.copier.BeanCopier;
-import cn.hutool.core.bean.copier.CopyOptions;
-import cn.hutool.core.bean.copier.ValueProvider;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Console;
-import cn.hutool.core.lang.Editor;
-import cn.hutool.core.lang.Filter;
-import cn.hutool.core.map.CaseInsensitiveMap;
-import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.ClassUtil;
-import cn.hutool.core.util.ModifierUtil;
-import cn.hutool.core.util.ReflectUtil;
-import cn.hutool.core.util.StrUtil;
-
/**
* Bean工具类
*
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java
index cd0ab0222..09b4feb9f 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java
@@ -1021,6 +1021,29 @@ public class NumberUtil {
return new DecimalFormat(pattern).format(value);
}
+ /**
+ * 格式化double
+ * 对 {@link DecimalFormat} 做封装
+ *
+ * @param pattern 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
+ *
null
*
diff --git a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java
index 14060cc47..13ed9740c 100644
--- a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java
@@ -1,12 +1,11 @@
package cn.hutool.core.util;
+import org.junit.Assert;
+import org.junit.Test;
+
import java.math.BigDecimal;
import java.math.RoundingMode;
-import cn.hutool.core.lang.Console;
-import org.junit.Assert;
-import org.junit.Test;
-
/**
* {@link NumberUtil} 单元测试类
*
diff --git a/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java b/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java
index a1b50f084..4c55a0ccd 100644
--- a/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java
+++ b/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java
@@ -55,13 +55,13 @@ final class InternalJSONUtil {
} else if (value instanceof Boolean) {
writer.write(value.toString());
} else if (value instanceof JSONString) {
- Object o;
+ String valueStr;
try {
- o = ((JSONString) value).toJSONString();
+ valueStr = ((JSONString) value).toJSONString();
} catch (Exception e) {
throw new JSONException(e);
}
- writer.write(o != null ? o.toString() : JSONUtil.quote(value.toString()));
+ writer.write(valueStr != null ? valueStr : JSONUtil.quote(value.toString()));
} else {
JSONUtil.quote(value.toString(), writer);
}
diff --git a/hutool-json/src/test/java/cn/hutool/json/CustomSerializeTest.java b/hutool-json/src/test/java/cn/hutool/json/CustomSerializeTest.java
index 5ebe9f333..18e46d590 100644
--- a/hutool-json/src/test/java/cn/hutool/json/CustomSerializeTest.java
+++ b/hutool-json/src/test/java/cn/hutool/json/CustomSerializeTest.java
@@ -19,7 +19,7 @@ public class CustomSerializeTest {
JSONObject obj = JSONUtil.parseObj(customBean);
Assert.assertEquals("testName", obj.getStr("customName"));
}
-
+
@Test
public void deserializeTest() {
JSONUtil.putDeserializer(CustomBean.class, json -> {