Java利用反射机制判断对象是否为空

news/2024/5/19 6:59:19 标签: java, 开发语言, 反射, 判空
java">package cn.com.git.dgms.common.utils;

import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.util.ArrayList;

/**
 * @author zhanghao
 * @create 2022/8/3 17:13
 */
 //Java利用反射机制判断对象是否为空,并返回一个为空字段的下标数组
public class ObjCheckIsNull {
    public static ArrayList<String> objCheckIsNull(Object object){
        ArrayList<String> list = new ArrayList<>();// 定义返回结果
        Class clazz = (Class)object.getClass(); // 得到类对象
        Field fields[] = clazz.getDeclaredFields(); // 得到所有属性
        ArrayList<String> listName = new ArrayList<>();//定义属性名集合
        String fieldName = null;
        for(Field field : fields){
            field.setAccessible(true);
            Object fieldValue = null;
            try {
                fieldValue = field.get(object); //得到属性值
                Type fieldType =field.getGenericType();//得到属性类型
                fieldName = field.getName(); // 得到属性名
                //属性名初始为log
                if(!"log".equals(fieldName)){
                    listName.add(fieldName);
                }
                System.out.println("属性类型:"+fieldType+",属性名:"+fieldName+",属性值:"+fieldValue);
            } catch (IllegalArgumentException | IllegalAccessException e) {
                e.printStackTrace();
            }
            //值为null
            if(fieldValue == null){
                list.add(String.valueOf(listName.indexOf(fieldName)));
            }
        }
        return list;
    }
}


http://www.niftyadmin.cn/n/1332499.html

相关文章

java利用EasyExcel实现导入功能,并返回错误信息的所属行列

Excel监听器&#xff1a; package cn.com.git.dgmsdi.web.controller.batchProducts;import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import java.util.ArrayList; import java.util.List;public final class Exc…

SpringBoot异常处理事务回滚(自动回滚、手动回滚、部分回滚)

1、自动回滚&#xff08;不try/catch&#xff09; Transactional(rollbackFor Exception.class)2、如果需要回滚全部操作&#xff0c;直接手工回滚异常异常即可&#xff08;针对try-catch&#xff09; Transactional(rollbackFor Exception.class).........//添加表List<…

Java、MySql去除小数点后多余的0

Java&#xff1a; public String dealRate(String s) {if (StringUtils.isNotBlank(s)) {if (s.indexOf(".") > 0) {//去掉多余的0s s.replaceAll("0?$", "");//如最后一位是.则去掉s s.replaceAll("[.]$", "");retur…

记MySQL中if条件语句以及include标签的用法

if条件语句 //如果条件判断为true则执行表达式1即 select * from project p where p.VALID_STATUS 1 and p.BELONG_ORG #{belongOrg} //如果条件判断为false则执行表达式2即 select * from project p where p.VALID_STATUS 1 and p.CREATED_ORG #{departCode} select *…

Java中List对象集合按照对象中某字段进行排序

在Java中,可以使用List集合对象的sort(Comparator<? super E> c)方法&#xff0c;按照对象中某字段对List集合进行排序 default void sort(Comparator<? super E> c) {Object[] a this.toArray();Arrays.sort(a, (Comparator) c);ListIterator<E> i thi…

创建线程池处理复杂数据,并返回所需参数

//定义存储处理好数据的批量业务数据集合List<BatchProductsBO> batchProductsBOList new ArrayList<>();//定义返回的错误数据的行和列Map<String,List<String>> mapAll new HashMap<>();long start System.currentTimeMillis();//批量的业务…

Java 斐波那契数列简便解法

Java 斐波那契数列简便解法&#xff1a; ##代码 int Fibonacci(int n) {if (n 0 || n 1) return n;int a 0, b 1, c;for (int i 2; i < n; i) {c a b;a b;b c;}return c; } 时间复杂度 &#xff1a;o(n); 空间复杂度&#xff1a;o(1);

学生管理系统 API 接口文档

1. 学生管理 API 接口文档 1.1. API 接口说明 接口基准地址&#xff1a;http://121.199.57.133:8080/服务端已开启 CORS 跨域支持使用 HTTP Status Code 标识状态数据返回格式统一使用 JSON 1.1.1. 支持的请求方法 GET&#xff08;SELECT&#xff09;&#xff1a;从服务器取…