package com.news.util; import java.lang.reflect.Field; /** * creator * 蓝色吉朗 */ public class EntityUtils { /** * 安全获取对象属性值,避免空指针异常。 * 对于字符串类型,空值返回"";数值类型返回默认值(如0)。 * * @param entity 实体对象 * @param fieldName 属性名称 * @return 属性值,如果是字符串类型且为空,则返回"";数值类型为null则返回0 */ public static Object safeGetFieldValue(Object entity, String fieldName) { try { if (entity == null) { return null; } Field field = entity.getClass().getDeclaredField(fieldName); field.setAccessible(true); // 允许访问私有字段 Class<?> fieldType = field.getType(); Object value = field.get(entity); if (value == null) { if (fieldType == String.class) { return ""; } else if (Number.class.isAssignableFrom(fieldType)) { // 返回0或相应类型的默认值,这里简化处理,只返回0 return 0; } // 其他类型根据需要添加处理逻辑 } return value; } catch (NoSuchFieldException | IllegalAccessException e) { throw new RuntimeException("获取属性值时发生错误", e); } } /** * 判断对象是否为null。 * * @param obj 要检查的对象 * @return true如果对象为null,否则false */ public static boolean isNull(Object obj) { return obj == null; } /** * 判断字符串是否为null或空字符串。 * * @param str 要检查的字符串 * @return true如果字符串为null或空字符串,否则false */ public static boolean isNullOrEmpty(String str) { return str == null || str.isEmpty(); } /** * 判断数字是否为null或0。 * * 注意:对于Integer、Double等包装类型,当值为null时会返回true,避免了空指针异常。 * * @param number 要检查的数字对象 * @return true如果数字为null或0,否则false */ public static boolean isNullOrZero(Number number) { return number == null || number.doubleValue() == 0; } /** * 判断数字是否为null。 * * 注意:对于Integer、Double等包装类型,当值为null时会返回true,避免了空指针异常。 * * @param number 要检查的数字对象 * @return true如果数字为nul,否则false */ public static boolean isNull(Number number) { return number == null; } // 可以根据需要添加更多的检查方法,比如针对其他类型的特殊检查 }
06-28
3380
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-25
2570
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)