利用反射判断初始化后的对象所有属性是否为空&判断对象指定属性是否为空

    如果是初始化的对象是无法仅通过对象!=null来判断其是否为空的。
    我认为有两个方法判断其是否为空:
        一是,对其循环遍历,判断属性是否为空
        二是,判断其某个必输项是否为空,下面我来列出详细代码

package 对象;

import java.lang.reflect.Field;

import com.sun.istack.internal.Nullable;

public class ObjectUtils {
     
	//循环遍历,判断属性是否为空
	public static boolean allFieldsIsEmpty(Object obj) {
     
		if(null == obj) {
     
			return true;
		}
		try{
     
			//getDeclaredFields 获得某个类的所有声明的字段,但不包括父类的
			for(Field f:obj.getClass().getDeclaredFields()) {
     
				//设置属性可以访问(即使私有)
		        f.setAccessible(true);
		        //这里要考虑一个问题,就是你的类里面是否有常量,如果有的话,这里要排除掉,如
		        //if (!ObjectUtils.isEmpty(f.get(obj)) && f.getName()!="serialVersionUID") {
     
		        if (!ObjectUtils.isEmpty(f.get(obj))) {
     
					//有一个不为空的字段就可以了
		        	return false;
				}
		     }
			}catch(Exception e) {
     
				e.printStackTrace();
			}
		return true;
	}
	//判断其某个必输项是否为空 index字段下标
	public static boolean fieldsIsEmpty(Object obj,int index) {
     
		if(null == obj) {
     
			return true;
		}
		try{
     
			Field field = obj.getClass().getDeclaredFields()[index];
			field.setAccessible(true);
		        if (!ObjectUtils.isEmpty(field.get(obj))) {
     
					//有一个不为空的字段就可以了
		        	return false;
				}	     
			}catch(Exception e) {
     
				e.printStackTrace();
			}
		return true;
		}
	//org.springframework.util.StringUtils的判空方法(@Nullable代表可以传入空值)
	public static boolean isEmpty(@Nullable Object obj) {
     
		return (obj == null || "".equals(obj));
	}
}

你可能感兴趣的:(java,java,反射)