package com.finance.common.utils; import cn.hutool.core.util.ObjectUtil; import java.lang.reflect.Field; import java.math.BigDecimal; /** * Object操作工具 **/ public class ObjectUtils extends ObjectUtil { /** * 为object设置默认值,对target中的基本类型进行默认值初始化, * 为null的对象不操作 * * @param target 需要初始化的对象 */ public static void setDefault(Object target) { if (target == null) { return; } Class clazz = target.getClass(); Field[] declaredFields = clazz.getDeclaredFields(); for (Field field : declaredFields) { setDefault(field, target); } } /** * 给某个字段设置为默认值 * * @param field * @param target */ private static void setDefault(Field field, Object target) { field.setAccessible(true); try { Object value = field.get(target); if (value != null) { return; } String type = field.getGenericType().toString(); Object defaultValue; switch (type) { case "class java.lang.String": case "class java.lang.Character": defaultValue = ""; break; case "class java.lang.Double": defaultValue = 0.0d; break; case "class java.lang.Long": defaultValue = 0L; break; case "class java.lang.Short": defaultValue = (short) 0; break; case "class java.lang.Integer": defaultValue = 0; break; case "class java.lang.Float": defaultValue = 0f; break; case "class java.lang.Byte": defaultValue = (byte) 0; break; case "class java.math.BigDecimal": defaultValue = BigDecimal.ZERO; break; case "class java.lang.Boolean": defaultValue = Boolean.FALSE; break; default: defaultValue = null; } field.set(target, defaultValue); } catch (Exception e) { e.printStackTrace(); } } }