package org.springblade.modules.project.utils;

import java.lang.reflect.Field;

public class ObjectUtils {

    /**
     * 判断指定对象的所有字段是否都为null。
     *
     * @param obj 需要检查的对象
     * @return 如果所有字段都为null，则返回true；否则返回false
     */
    public static boolean isAllFieldsNull(Object obj) {
        if (obj == null) {
            throw new IllegalArgumentException("The input object cannot be null");
        }

        Class<?> clazz = obj.getClass();
        Field[] fields = clazz.getDeclaredFields();

        for (Field field : fields) {
            field.setAccessible(true); // 允许访问私有字段

            try {
                Object fieldValue = field.get(obj);
                if (fieldValue != null) {
                    // 只要发现有一个非null字段，就立即返回false
                    return false;
                }
            } catch (IllegalAccessException e) {
                throw new RuntimeException("Failed to access field: " + field.getName(), e);
            }
        }

        // 所有字段都检查完毕且均为null，返回true
        return true;
    }

    public static void main(String[] args) {


    }
}
