diff --git a/mica-core/src/main/java/net/dreamlu/mica/core/utils/ObjectUtil.java b/mica-core/src/main/java/net/dreamlu/mica/core/utils/ObjectUtil.java index 5d3ce11e5d290f30cabd166440ededda7258815b..7f3757e090ae8379e30b038c64b9317eca35bdc2 100644 --- a/mica-core/src/main/java/net/dreamlu/mica/core/utils/ObjectUtil.java +++ b/mica-core/src/main/java/net/dreamlu/mica/core/utils/ObjectUtil.java @@ -237,7 +237,7 @@ public class ObjectUtil extends org.springframework.util.ObjectUtils { /** * 对象转为 Float * - * @param object Object + * @param object Object * @param defaultValue float * @return 结果 */ @@ -269,7 +269,7 @@ public class ObjectUtil extends org.springframework.util.ObjectUtils { /** * 对象转为 Double * - * @param object Object + * @param object Object * @param defaultValue double * @return 结果 */ @@ -301,7 +301,7 @@ public class ObjectUtil extends org.springframework.util.ObjectUtils { /** * 对象转为 Byte * - * @param object Object + * @param object Object * @param defaultValue byte * @return 结果 */ @@ -333,7 +333,7 @@ public class ObjectUtil extends org.springframework.util.ObjectUtils { /** * 对象转为 Short * - * @param object Object + * @param object Object * @param defaultValue short * @return 结果 */ @@ -364,9 +364,9 @@ public class ObjectUtil extends org.springframework.util.ObjectUtils { } /** - * 对象转为 Boolean + * 对象转为 Boolean,支持 1、0,y、yes、n、no,on、off,true、false * - * @param object Object + * @param object Object * @param defaultValue 默认值 * @return 结果 */ @@ -374,13 +374,20 @@ public class ObjectUtil extends org.springframework.util.ObjectUtils { public static Boolean toBoolean(@Nullable Object object, @Nullable Boolean defaultValue) { if (object instanceof Boolean) { return (Boolean) object; - } - if (object instanceof CharSequence) { + } else if (object instanceof CharSequence) { String value = ((CharSequence) object).toString(); - try { - return Boolean.parseBoolean(value.trim()); - } catch (NumberFormatException nfe) { - return defaultValue; + if (StringPool.TRUE.equalsIgnoreCase(value) || + StringPool.Y.equalsIgnoreCase(value) || + StringPool.YES.equalsIgnoreCase(value) || + StringPool.ON.equalsIgnoreCase(value) || + StringPool.ONE.equalsIgnoreCase(value)) { + return true; + } else if (StringPool.FALSE.equalsIgnoreCase(value) || + StringPool.N.equalsIgnoreCase(value) || + StringPool.NO.equalsIgnoreCase(value) || + StringPool.OFF.equalsIgnoreCase(value) || + StringPool.ZERO.equalsIgnoreCase(value)) { + return false; } } return defaultValue; diff --git a/mica-core/src/main/java/net/dreamlu/mica/core/utils/StringPool.java b/mica-core/src/main/java/net/dreamlu/mica/core/utils/StringPool.java index aee4207553825e860cf9623c12b9e98319c01d05..2d2bcd1a7294f9decdfb946cbfbd4fb585e4b54d 100644 --- a/mica-core/src/main/java/net/dreamlu/mica/core/utils/StringPool.java +++ b/mica-core/src/main/java/net/dreamlu/mica/core/utils/StringPool.java @@ -79,5 +79,7 @@ public interface StringPool { String GET = "get"; String IS = "is"; String UNKNOWN = "unknown"; + String OK = "ok"; + // @formatter:on } diff --git a/mica-core/src/test/java/net/dreamlu/mica/test/utils/ObjectUtilTest.java b/mica-core/src/test/java/net/dreamlu/mica/test/utils/ObjectUtilTest.java index 6911d75242b6acc00559b8534a8465c9ee42cb49..80317dff51e7ef1e963c626c79e69cb56f3c2cc2 100644 --- a/mica-core/src/test/java/net/dreamlu/mica/test/utils/ObjectUtilTest.java +++ b/mica-core/src/test/java/net/dreamlu/mica/test/utils/ObjectUtilTest.java @@ -74,4 +74,17 @@ public class ObjectUtilTest { Assert.assertTrue(ObjectUtil.isEmpty(Collections.emptyList())); } + /** + * Method: toBoolean(@Nullable Object obj) + */ + @Test + public void testToBoolean() throws Exception { + Assert.assertNull(ObjectUtil.toBoolean(null)); + Assert.assertNull(ObjectUtil.toBoolean("a")); + Assert.assertTrue(ObjectUtil.toBoolean("1")); + Assert.assertTrue(ObjectUtil.toBoolean(null, true)); + Assert.assertTrue(ObjectUtil.toBoolean("a", true)); + Assert.assertTrue(ObjectUtil.toBoolean("1", true)); + } + }