public class EntityUtils {
/**
* 判断实体类是否为空
* 该方法会检查传入的对象的所有字段是否为null或默认值(如0、false、空字符串等)
*
* @param entity 需要检查的实体类对象
* @return 如果所有字段都为空或默认值,则返回true,否则返回false
*/
public static boolean isEntityEmpty(Object entity) {
if (entity == null) {
return true;
}
// 获取类的所有字段
Class<?> clazz = entity.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true); // 允许访问私有字段
try {
Object value = field.get(entity);
if (value != null && !isEmpty(value)) {
return false; // 只要有一个非空字段就返回false
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return true; // 所有字段都为空或默认值
}
/**
* 检查基本类型和包装类型的默认值
*
* @param value 需要检查的值
* @return 如果是默认值则返回true,否则返回false
*/
private static boolean isEmpty(Object value) {
if (value instanceof String) {
return ((String) value).trim().isEmpty();
} else if (value instanceof Collection) {
return ((Collection<?>) value).isEmpty();
} else if (value instanceof Map) {
return ((Map<?, ?>) value).isEmpty();
} else if (value instanceof Object[]) {
return ((Object[]) value).length == 0;
} else if (value instanceof Boolean) {
return !(Boolean) value;
} else if (value instanceof Number) {
return ((Number) value).doubleValue() == 0.0;
} else if (value instanceof Character) {
return ((Character) value).equals('\u0000');
}
return false;
}
// 示例实体类
public static class ExampleEntity {
private String name;
private int age;
private boolean active;
// Getters and Setters
}
public static void main(String[] args) {
ExampleEntity entity = new ExampleEntity();
System.out.println(isEntityEmpty(entity)); // 输出: true
entity.setName("John");
System.out.println(isEntityEmpty(entity)); // 输出: false
}
}
上一篇:java判断集合是否为空
下一篇:java转小写字母
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站