mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-02 20:02:49 +08:00
addd null check
This commit is contained in:
parent
1106841210
commit
65ba22d34b
@ -164,15 +164,14 @@ public class BeanDesc implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private void initForRecord() {
|
private void initForRecord() {
|
||||||
final Method[] getters = MethodUtil.getPublicMethods(this.beanClass, method -> 0 == method.getParameterCount());
|
final Method[] getters = MethodUtil.getPublicMethods(this.beanClass, method -> 0 == method.getParameterCount());
|
||||||
for (final Field field : FieldUtil.getFields(this.beanClass)) {
|
// 排除静态属性和对象子类
|
||||||
// 排除静态属性和对象子类
|
final Field[] fields = FieldUtil.getFields(this.beanClass, field -> !ModifierUtil.isStatic(field) && !FieldUtil.isOuterClassField(field));
|
||||||
if (!ModifierUtil.isStatic(field) && !FieldUtil.isOuterClassField(field)) {
|
for (final Field field : fields) {
|
||||||
for (final Method getter : getters) {
|
for (final Method getter : getters) {
|
||||||
if (field.getName().equals(getter.getName())) {
|
if (field.getName().equals(getter.getName())) {
|
||||||
//record对象,getter方法与字段同名
|
//record对象,getter方法与字段同名
|
||||||
final PropDesc prop = new PropDesc(field, getter, null);
|
final PropDesc prop = new PropDesc(field, getter, null);
|
||||||
this.propMap.putIfAbsent(prop.getFieldName(), prop);
|
this.propMap.putIfAbsent(prop.getFieldName(), prop);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -183,14 +182,13 @@ public class BeanDesc implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private void initForBean() {
|
private void initForBean() {
|
||||||
final Method[] gettersAndSetters = MethodUtil.getPublicMethods(this.beanClass, MethodUtil::isGetterOrSetterIgnoreCase);
|
final Method[] gettersAndSetters = MethodUtil.getPublicMethods(this.beanClass, MethodUtil::isGetterOrSetterIgnoreCase);
|
||||||
|
// 排除静态属性和对象子类
|
||||||
|
final Field[] fields = FieldUtil.getFields(this.beanClass, field -> !ModifierUtil.isStatic(field) && !FieldUtil.isOuterClassField(field));
|
||||||
PropDesc prop;
|
PropDesc prop;
|
||||||
for (final Field field : FieldUtil.getFields(this.beanClass)) {
|
for (final Field field : fields) {
|
||||||
// 排除静态属性和对象子类
|
prop = createProp(field, gettersAndSetters);
|
||||||
if (!ModifierUtil.isStatic(field) && !FieldUtil.isOuterClassField(field)) {
|
// 只有不存在时才放入,防止父类属性覆盖子类属性
|
||||||
prop = createProp(field, gettersAndSetters);
|
this.propMap.putIfAbsent(prop.getFieldName(), prop);
|
||||||
// 只有不存在时才放入,防止父类属性覆盖子类属性
|
|
||||||
this.propMap.putIfAbsent(prop.getFieldName(), prop);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,8 +108,8 @@ public class ModifierUtil {
|
|||||||
/**
|
/**
|
||||||
* 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true)
|
* 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true)
|
||||||
*
|
*
|
||||||
* @param clazz 类
|
* @param clazz 类,如果为{@code null}返回{@code false}
|
||||||
* @param modifierTypes 修饰符枚举
|
* @param modifierTypes 修饰符枚举,如果为空返回{@code false}
|
||||||
* @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false
|
* @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false
|
||||||
*/
|
*/
|
||||||
public static boolean hasModifier(final Class<?> clazz, final ModifierType... modifierTypes) {
|
public static boolean hasModifier(final Class<?> clazz, final ModifierType... modifierTypes) {
|
||||||
@ -122,8 +122,8 @@ public class ModifierUtil {
|
|||||||
/**
|
/**
|
||||||
* 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true)
|
* 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true)
|
||||||
*
|
*
|
||||||
* @param member 构造、字段或方法
|
* @param member 构造、字段或方法,如果为{@code null}返回{@code false}
|
||||||
* @param modifierTypes 修饰符枚举
|
* @param modifierTypes 修饰符枚举,如果为空返回{@code false}
|
||||||
* @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false
|
* @return 是否有指定修饰符,如果有返回true,否则false,如果提供参数为null返回false
|
||||||
*/
|
*/
|
||||||
public static boolean hasModifier(final Member member, final ModifierType... modifierTypes) {
|
public static boolean hasModifier(final Member member, final ModifierType... modifierTypes) {
|
||||||
@ -136,74 +136,74 @@ public class ModifierUtil {
|
|||||||
/**
|
/**
|
||||||
* 提供的方法是否为default方法
|
* 提供的方法是否为default方法
|
||||||
*
|
*
|
||||||
* @param method 方法
|
* @param method 方法,如果为{@code null}返回{@code false}
|
||||||
* @return 是否为default方法
|
* @return 是否为default方法
|
||||||
* @since 6.0.0
|
* @since 6.0.0
|
||||||
*/
|
*/
|
||||||
public static boolean isDefault(final Method method) {
|
public static boolean isDefault(final Method method) {
|
||||||
return method.isDefault();
|
return null != method && method.isDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否是public成员,可检测包括构造、字段和方法
|
* 是否是public成员,可检测包括构造、字段和方法
|
||||||
*
|
*
|
||||||
* @param member 构造、字段或方法
|
* @param member 构造、字段或方法,如果为{@code null}返回{@code false}
|
||||||
* @return 是否是public
|
* @return 是否是public
|
||||||
*/
|
*/
|
||||||
public static boolean isPublic(final Member member) {
|
public static boolean isPublic(final Member member) {
|
||||||
return Modifier.isPublic(member.getModifiers());
|
return null != member && Modifier.isPublic(member.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否是public类
|
* 是否是public类
|
||||||
*
|
*
|
||||||
* @param clazz 类
|
* @param clazz 类,如果为{@code null}返回{@code false}
|
||||||
* @return 是否是public
|
* @return 是否是public
|
||||||
*/
|
*/
|
||||||
public static boolean isPublic(final Class<?> clazz) {
|
public static boolean isPublic(final Class<?> clazz) {
|
||||||
return Modifier.isPublic(clazz.getModifiers());
|
return null != clazz && Modifier.isPublic(clazz.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否是private成员,可检测包括构造、字段和方法
|
* 是否是private成员,可检测包括构造、字段和方法
|
||||||
*
|
*
|
||||||
* @param member 构造、字段或方法
|
* @param member 构造、字段或方法,如果为{@code null}返回{@code false}
|
||||||
* @return 是否是private
|
* @return 是否是private
|
||||||
*/
|
*/
|
||||||
public static boolean isPrivate(final Member member) {
|
public static boolean isPrivate(final Member member) {
|
||||||
return Modifier.isPrivate(member.getModifiers());
|
return null != member && Modifier.isPrivate(member.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否是private类
|
* 是否是private类
|
||||||
*
|
*
|
||||||
* @param clazz 类
|
* @param clazz 类,如果为{@code null}返回{@code false}
|
||||||
* @return 是否是private类
|
* @return 是否是private类
|
||||||
*/
|
*/
|
||||||
public static boolean isPrivate(final Class<?> clazz) {
|
public static boolean isPrivate(final Class<?> clazz) {
|
||||||
return Modifier.isPrivate(clazz.getModifiers());
|
return null != clazz && Modifier.isPrivate(clazz.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否是static成员,包括构造、字段或方法
|
* 是否是static成员,包括构造、字段或方法
|
||||||
*
|
*
|
||||||
* @param member 构造、字段或方法
|
* @param member 构造、字段或方法,如果为{@code null}返回{@code false}
|
||||||
* @return 是否是static
|
* @return 是否是static
|
||||||
* @since 4.0.8
|
* @since 4.0.8
|
||||||
*/
|
*/
|
||||||
public static boolean isStatic(final Member member) {
|
public static boolean isStatic(final Member member) {
|
||||||
return Modifier.isStatic(member.getModifiers());
|
return null != member && Modifier.isStatic(member.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否是static类
|
* 是否是static类
|
||||||
*
|
*
|
||||||
* @param clazz 类
|
* @param clazz 类,如果为{@code null}返回{@code false}
|
||||||
* @return 是否是static
|
* @return 是否是static
|
||||||
* @since 4.0.8
|
* @since 4.0.8
|
||||||
*/
|
*/
|
||||||
public static boolean isStatic(final Class<?> clazz) {
|
public static boolean isStatic(final Class<?> clazz) {
|
||||||
return Modifier.isStatic(clazz.getModifiers());
|
return null != clazz && Modifier.isStatic(clazz.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -214,7 +214,7 @@ public class ModifierUtil {
|
|||||||
* @since 5.6.3
|
* @since 5.6.3
|
||||||
*/
|
*/
|
||||||
public static boolean isSynthetic(final Member member) {
|
public static boolean isSynthetic(final Member member) {
|
||||||
return member.isSynthetic();
|
return null != member && member.isSynthetic();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -225,7 +225,7 @@ public class ModifierUtil {
|
|||||||
* @since 5.6.3
|
* @since 5.6.3
|
||||||
*/
|
*/
|
||||||
public static boolean isSynthetic(final Class<?> clazz) {
|
public static boolean isSynthetic(final Class<?> clazz) {
|
||||||
return clazz.isSynthetic();
|
return null != clazz && clazz.isSynthetic();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -236,7 +236,7 @@ public class ModifierUtil {
|
|||||||
* @since 5.7.23
|
* @since 5.7.23
|
||||||
*/
|
*/
|
||||||
public static boolean isAbstract(final Member member) {
|
public static boolean isAbstract(final Member member) {
|
||||||
return Modifier.isAbstract(member.getModifiers());
|
return null != member && Modifier.isAbstract(member.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -247,7 +247,7 @@ public class ModifierUtil {
|
|||||||
* @since 5.7.23
|
* @since 5.7.23
|
||||||
*/
|
*/
|
||||||
public static boolean isAbstract(final Class<?> clazz) {
|
public static boolean isAbstract(final Class<?> clazz) {
|
||||||
return Modifier.isAbstract(clazz.getModifiers());
|
return null != clazz && Modifier.isAbstract(clazz.getModifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user