fix modifier bug

This commit is contained in:
Looly 2021-03-18 21:48:14 +08:00
parent abdedf6822
commit 8e8518c8d1
4 changed files with 51 additions and 18 deletions

View File

@ -12,12 +12,14 @@
* 【http 】 UserAgentUtil增加miniProgram判断(issue#1475@Github) * 【http 】 UserAgentUtil增加miniProgram判断(issue#1475@Github)
* 【db 】 增加Ignite数据库驱动识别 * 【db 】 增加Ignite数据库驱动识别
* 【core 】 DateUtil.parse支持带毫秒的UTC时间 * 【core 】 DateUtil.parse支持带毫秒的UTC时间
* 【core 】 IdcardUtil.Idcard增加toStringpr#1487@Github
### Bug修复 ### Bug修复
* 【core 】 修复IoUtil.readBytes的FileInputStream中isClose参数失效问题issue#I3B7UD@Gitee * 【core 】 修复IoUtil.readBytes的FileInputStream中isClose参数失效问题issue#I3B7UD@Gitee
* 【core 】 修复DataUnit中KB不大写的问题 * 【core 】 修复DataUnit中KB不大写的问题
* 【json 】 修复JSONUtil.getByPath类型错误问题issue#I3BSDF@Gitee * 【json 】 修复JSONUtil.getByPath类型错误问题issue#I3BSDF@Gitee
* 【core 】 修复BeanUtil.toBean提供null未返回null的问题issue#I3BQPV@Gitee * 【core 】 修复BeanUtil.toBean提供null未返回null的问题issue#I3BQPV@Gitee
* 【core 】 修复ModifierUtil#modifiersToInt中逻辑判断问题issue#1486@Github
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------

View File

@ -719,5 +719,15 @@ public class IdcardUtil {
public Integer getGender() { public Integer getGender() {
return this.gender; return this.gender;
} }
@Override
public String toString() {
return "Idcard{" +
"provinceCode='" + provinceCode + '\'' +
", cityCode='" + cityCode + '\'' +
", birthDate=" + birthDate +
", gender=" + gender +
'}';
}
} }
} }

View File

@ -7,7 +7,7 @@ import java.lang.reflect.Modifier;
/** /**
* 修饰符工具类 * 修饰符工具类
* *
* @author looly * @author looly
* @since 4.0.5 * @since 4.0.5
*/ */
@ -15,7 +15,7 @@ public class ModifierUtil {
/** /**
* 修饰符枚举 * 修饰符枚举
* *
* @author looly * @author looly
* @since 4.0.5 * @since 4.0.5
*/ */
@ -66,7 +66,7 @@ public class ModifierUtil {
/** /**
* 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true * 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true
* *
* @param clazz * @param clazz
* @param modifierTypes 修饰符枚举 * @param modifierTypes 修饰符枚举
* @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false * @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false
@ -80,7 +80,7 @@ public class ModifierUtil {
/** /**
* 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true * 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true
* *
* @param constructor 构造方法 * @param constructor 构造方法
* @param modifierTypes 修饰符枚举 * @param modifierTypes 修饰符枚举
* @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false * @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false
@ -94,7 +94,7 @@ public class ModifierUtil {
/** /**
* 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true * 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true
* *
* @param method 方法 * @param method 方法
* @param modifierTypes 修饰符枚举 * @param modifierTypes 修饰符枚举
* @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false * @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false
@ -105,10 +105,10 @@ public class ModifierUtil {
} }
return 0 != (method.getModifiers() & modifiersToInt(modifierTypes)); return 0 != (method.getModifiers() & modifiersToInt(modifierTypes));
} }
/** /**
* 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true * 是否同时存在一个或多个修饰符可能有多个修饰符如果有指定的修饰符则返回true
* *
* @param field 字段 * @param field 字段
* @param modifierTypes 修饰符枚举 * @param modifierTypes 修饰符枚举
* @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false * @return 是否有指定修饰符如果有返回true否则false如果提供参数为null返回false
@ -119,10 +119,10 @@ public class ModifierUtil {
} }
return 0 != (field.getModifiers() & modifiersToInt(modifierTypes)); return 0 != (field.getModifiers() & modifiersToInt(modifierTypes));
} }
/** /**
* 是否是Public字段 * 是否是Public字段
* *
* @param field 字段 * @param field 字段
* @return 是否是Public * @return 是否是Public
*/ */
@ -132,7 +132,7 @@ public class ModifierUtil {
/** /**
* 是否是Public方法 * 是否是Public方法
* *
* @param method 方法 * @param method 方法
* @return 是否是Public * @return 是否是Public
*/ */
@ -142,7 +142,7 @@ public class ModifierUtil {
/** /**
* 是否是Public类 * 是否是Public类
* *
* @param clazz * @param clazz
* @return 是否是Public * @return 是否是Public
*/ */
@ -152,17 +152,17 @@ public class ModifierUtil {
/** /**
* 是否是Public构造 * 是否是Public构造
* *
* @param constructor 构造 * @param constructor 构造
* @return 是否是Public * @return 是否是Public
*/ */
public static boolean isPublic(Constructor<?> constructor) { public static boolean isPublic(Constructor<?> constructor) {
return hasModifier(constructor, ModifierType.PUBLIC); return hasModifier(constructor, ModifierType.PUBLIC);
} }
/** /**
* 是否是static字段 * 是否是static字段
* *
* @param field 字段 * @param field 字段
* @return 是否是static * @return 是否是static
* @since 4.0.8 * @since 4.0.8
@ -173,7 +173,7 @@ public class ModifierUtil {
/** /**
* 是否是static方法 * 是否是static方法
* *
* @param method 方法 * @param method 方法
* @return 是否是static * @return 是否是static
* @since 4.0.8 * @since 4.0.8
@ -184,7 +184,7 @@ public class ModifierUtil {
/** /**
* 是否是static类 * 是否是static类
* *
* @param clazz * @param clazz
* @return 是否是static * @return 是否是static
* @since 4.0.8 * @since 4.0.8
@ -192,7 +192,7 @@ public class ModifierUtil {
public static boolean isStatic(Class<?> clazz) { public static boolean isStatic(Class<?> clazz) {
return hasModifier(clazz, ModifierType.STATIC); return hasModifier(clazz, ModifierType.STATIC);
} }
//-------------------------------------------------------------------------------------------------------- Private method start //-------------------------------------------------------------------------------------------------------- Private method start
/** /**
* 多个修饰符做操作表示同时存在多个修饰符 * 多个修饰符做操作表示同时存在多个修饰符
@ -202,7 +202,7 @@ public class ModifierUtil {
private static int modifiersToInt(ModifierType... modifierTypes) { private static int modifiersToInt(ModifierType... modifierTypes) {
int modifier = modifierTypes[0].getValue(); int modifier = modifierTypes[0].getValue();
for(int i = 1; i < modifierTypes.length; i++) { for(int i = 1; i < modifierTypes.length; i++) {
modifier &= modifierTypes[i].getValue(); modifier |= modifierTypes[i].getValue();
} }
return modifier; return modifier;
} }

View File

@ -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() {
}
}