From 8e8518c8d1cd791b0c4ff45d16911aca3f30be05 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 18 Mar 2021 21:48:14 +0800 Subject: [PATCH] fix modifier bug --- CHANGELOG.md | 2 ++ .../java/cn/hutool/core/util/IdcardUtil.java | 10 ++++++ .../cn/hutool/core/util/ModifierUtil.java | 36 +++++++++---------- .../cn/hutool/core/util/ModifierUtilTest.java | 21 +++++++++++ 4 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 hutool-core/src/test/java/cn/hutool/core/util/ModifierUtilTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index ee34b8119..028a5116f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,12 +12,14 @@ * 【http 】 UserAgentUtil增加miniProgram判断(issue#1475@Github) * 【db 】 增加Ignite数据库驱动识别 * 【core 】 DateUtil.parse支持带毫秒的UTC时间 +* 【core 】 IdcardUtil.Idcard增加toString(pr#1487@Github) ### Bug修复 * 【core 】 修复IoUtil.readBytes的FileInputStream中isClose参数失效问题(issue#I3B7UD@Gitee) * 【core 】 修复DataUnit中KB不大写的问题 * 【json 】 修复JSONUtil.getByPath类型错误问题(issue#I3BSDF@Gitee) * 【core 】 修复BeanUtil.toBean提供null未返回null的问题(issue#I3BQPV@Gitee) +* 【core 】 修复ModifierUtil#modifiersToInt中逻辑判断问题(issue#1486@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java index ca7ca2aa8..296dcd787 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java @@ -719,5 +719,15 @@ public class IdcardUtil { public Integer getGender() { return this.gender; } + + @Override + public String toString() { + return "Idcard{" + + "provinceCode='" + provinceCode + '\'' + + ", cityCode='" + cityCode + '\'' + + ", birthDate=" + birthDate + + ", gender=" + gender + + '}'; + } } } diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ModifierUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ModifierUtil.java index 54a5dcce3..669b0980a 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ModifierUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ModifierUtil.java @@ -7,7 +7,7 @@ import java.lang.reflect.Modifier; /** * 修饰符工具类 - * + * * @author looly * @since 4.0.5 */ @@ -15,7 +15,7 @@ public class ModifierUtil { /** * 修饰符枚举 - * + * * @author looly * @since 4.0.5 */ @@ -66,7 +66,7 @@ public class ModifierUtil { /** * 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) - * + * * @param clazz 类 * @param modifierTypes 修饰符枚举 * @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false @@ -80,7 +80,7 @@ public class ModifierUtil { /** * 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) - * + * * @param constructor 构造方法 * @param modifierTypes 修饰符枚举 * @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false @@ -94,7 +94,7 @@ public class ModifierUtil { /** * 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) - * + * * @param method 方法 * @param modifierTypes 修饰符枚举 * @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false @@ -105,10 +105,10 @@ public class ModifierUtil { } return 0 != (method.getModifiers() & modifiersToInt(modifierTypes)); } - + /** * 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) - * + * * @param field 字段 * @param modifierTypes 修饰符枚举 * @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false @@ -119,10 +119,10 @@ public class ModifierUtil { } return 0 != (field.getModifiers() & modifiersToInt(modifierTypes)); } - + /** * 是否是Public字段 - * + * * @param field 字段 * @return 是否是Public */ @@ -132,7 +132,7 @@ public class ModifierUtil { /** * 是否是Public方法 - * + * * @param method 方法 * @return 是否是Public */ @@ -142,7 +142,7 @@ public class ModifierUtil { /** * 是否是Public类 - * + * * @param clazz 类 * @return 是否是Public */ @@ -152,17 +152,17 @@ public class ModifierUtil { /** * 是否是Public构造 - * + * * @param constructor 构造 * @return 是否是Public */ public static boolean isPublic(Constructor constructor) { return hasModifier(constructor, ModifierType.PUBLIC); } - + /** * 是否是static字段 - * + * * @param field 字段 * @return 是否是static * @since 4.0.8 @@ -173,7 +173,7 @@ public class ModifierUtil { /** * 是否是static方法 - * + * * @param method 方法 * @return 是否是static * @since 4.0.8 @@ -184,7 +184,7 @@ public class ModifierUtil { /** * 是否是static类 - * + * * @param clazz 类 * @return 是否是static * @since 4.0.8 @@ -192,7 +192,7 @@ public class ModifierUtil { public static boolean isStatic(Class clazz) { return hasModifier(clazz, ModifierType.STATIC); } - + //-------------------------------------------------------------------------------------------------------- Private method start /** * 多个修饰符做“与”操作,表示同时存在多个修饰符 @@ -202,7 +202,7 @@ public class ModifierUtil { private static int modifiersToInt(ModifierType... modifierTypes) { int modifier = modifierTypes[0].getValue(); for(int i = 1; i < modifierTypes.length; i++) { - modifier &= modifierTypes[i].getValue(); + modifier |= modifierTypes[i].getValue(); } return modifier; } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ModifierUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ModifierUtilTest.java new file mode 100644 index 000000000..a2f64945c --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/util/ModifierUtilTest.java @@ -0,0 +1,21 @@ +package cn.hutool.core.util; + +import org.junit.Assert; +import org.junit.Test; + +import java.lang.reflect.Method; + +public class ModifierUtilTest { + + @Test + public void hasModifierTest() throws NoSuchMethodException { + Method method = ModifierUtilTest.class.getDeclaredMethod("ddd"); + Assert.assertTrue(ModifierUtil.hasModifier(method, ModifierUtil.ModifierType.PRIVATE)); + Assert.assertTrue(ModifierUtil.hasModifier(method, + ModifierUtil.ModifierType.PRIVATE, + ModifierUtil.ModifierType.STATIC) + ); + } + private static void ddd() { + } +}