package com.iailab.framework.common.util.object; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import java.lang.reflect.Field; import java.util.Arrays; import java.util.function.Consumer; /** * Object 工具类 * * @author iailab */ public class ObjectUtils { /** * 复制对象,并忽略 Id 编号 * * @param object 被复制对象 * @param consumer 消费者,可以二次编辑被复制对象 * @return 复制后的对象 */ public static T cloneIgnoreId(T object, Consumer consumer) { T result = ObjectUtil.clone(object); // 忽略 id 编号 Field field = ReflectUtil.getField(object.getClass(), "id"); if (field != null) { ReflectUtil.setFieldValue(result, field, null); } // 二次编辑 if (result != null) { consumer.accept(result); } return result; } public static > T max(T obj1, T obj2) { if (obj1 == null) { return obj2; } if (obj2 == null) { return obj1; } return obj1.compareTo(obj2) > 0 ? obj1 : obj2; } @SafeVarargs public static T defaultIfNull(T... array) { for (T item : array) { if (item != null) { return item; } } return null; } @SafeVarargs public static boolean equalsAny(T obj, T... array) { return Arrays.asList(array).contains(obj); } }