首页 > 编程语言 >java 如何实现判断一个对象所有的属性是否为空

java 如何实现判断一个对象所有的属性是否为空

时间:2024-09-23 18:16:36浏览次数:1  
标签:return methods person Person fieldName 为空 java true 属性

 

能适配所有类型的:   
Person person = new Person(); person.setId(0); // --- true Person person = null; // --- true Person person = new Person(); person.setName("xxx"); // --- false Person person = new Person(); person.setName(""); // --- true

类似这个效果的...自己写了个类,只能对string判断:

package utils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * Created by weiyang on 2015/2/10.
 */
public class BeanUtils {
    public static boolean checkFieldValueNull(Object bean) {
        boolean result = true;
        if (bean == null) {
            return true;
        }
        Class<?> cls = bean.getClass();
        Method[] methods = cls.getDeclaredMethods();
        Field[] fields = cls.getDeclaredFields();
        for (Field field : fields) {
            try {
                String fieldGetName = parGetName(field.getName());
                if (!checkGetMet(methods, fieldGetName)) {
                    continue;
                }
                Method fieldGetMet = cls.getMethod(fieldGetName, new Class[]{});
                Object fieldVal = fieldGetMet.invoke(bean, new Object[]{});
                if (fieldVal != null) {
                    if ("".equals(fieldVal)) {
                        result = true;
                    } else {
                        result = false;
                    }
                }
            } catch (Exception e) {
                continue;
            }
        }
        return result;
    }


    /**
     * 拼接某属性的 get方法
     *
     * @param fieldName
     * @return String
     */
    public static String parGetName(String fieldName) {
        if (null == fieldName || "".equals(fieldName)) {
            return null;
        }
        int startIndex = 0;
        if (fieldName.charAt(0) == '_')
            startIndex = 1;
        return "get"
                + fieldName.substring(startIndex, startIndex + 1).toUpperCase()
                + fieldName.substring(startIndex + 1);
    }

    /**
     * 判断是否存在某属性的 get方法
     *
     * @param methods
     * @param fieldGetMet
     * @return boolean
     */
    public static boolean checkGetMet(Method[] methods, String fieldGetMet) {
        for (Method met : methods) {
            if (fieldGetMet.equals(met.getName())) {
                return true;
            }
        }
        return false;
    }

}

标签:return,methods,person,Person,fieldName,为空,java,true,属性
From: https://www.cnblogs.com/520future/p/9005894.html

相关文章

  • Javascript调试命令——你只会Console.log() ?
    Javascript调试命令——你只会Console.log()?https://segmentfault.com/a/1190000012957199Console对象提供对浏览器控制台的接入(如:Firefox的WebConsole)。不同浏览器上它的工作方式是不一样的,但这里会介绍一些大都会提供的接口特性。Console对象可以在任何全局对象中访问,......
  • JAVA Response 返回值再拿
    在Java中,当你需要从Response对象中获取返回值时,可以使用以下方法:首先,确保你已经导入了相关的库。例如,如果你使用的是java.net.HttpURLConnection,则需要导入以下包:importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjav......
  • springboot基于Java的高校学生食堂系统(源码+vue+部署文档+前后端分离等)
    收藏关注不迷路!!......
  • 【解决方案】Java 互联网项目中常见的 Redis 缓存应用场景
    一、常见key-value首先介绍的是项目开发中常见的一些String类型的key-value结构场景,如:使用jsonStr结构存储的用户登录信息,包括:手机号、token、唯一uuid、昵称等;jsonStr结构某个热门商品的信息,包括:商品名称、商品唯一id、所属商家、价格等;String类型的、......
  • 【计算机专业毕设最新Java必过毕设选题2025】基于微信小程序的美食推荐小程序(源码+万
    作品简介 Hi,各位同学好呀!今天向大家分享一个最新完成的高质量毕业设计项目作品基于uniapp+springboot的XXX微信小程序项目评分(最低0分,满分5分)难度系数:3分工作量:5分创新点:3分界面美化:5分使用技术前端:uniapp后端:springboot数据库:MySql服务器:apache-tom......
  • [AI回答]Java中Long和long的区别,为什么在Springboot项目中一般使用Long
    Long和long的区别在Java中,Long和long是两个不同的概念,它们分别代表不同的数据类型:long:这是一个基本数据类型(primitivetype)。它用于存储64位带符号的整数。它的取值范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。在使用long类型变量时,......
  • windows 整合elk(elasticsearch、kibana、logstash)及 Java maven项目配置logback集成el
    文章目录windows版elk部署文档1、文件准备2、系统配置启动2.1、elasticsarch2.1.1、生成证书2.1.2、生成秘钥2.1.3、移动凭证2.1.4、改配置2.1.5、启动2.1.6、访问运行2.1.7、生成kibana账号2.2、kibana2.2.1改配置2.2.2启动2.2.3访问测试......
  • java集合知识整理1:Java集合概览
    目录Java集合概览List接口set接口Queue接口Map接口其他相关接口和类Java集合概览java集合也叫做容器,主要由两大接口派生而来:一个是Collection接口,主要用于存放单一元素,另一个是Map接口,主要存放键值对。对于Collection接口,下面又有三个主要的子接口:List、Set、Que......
  • JavaWeb -Servlet对表单数据的处理 例:登录系统
    一、创建html文件并添加框架内容<tr></tr>是表格标签<td></td>是单元格标签1.添加用户名和密码<inputtype="text"name="username">文本格式(text),函数名是username。<inputtype="password"name="password">密码格式(password),函数名......
  • JavaSE---Fail-Fast
    总结主要用于集合类中,以确保在遍历集合时如果集合本身被修改,则会立即抛出ConcurrentModificationException异常。原理内部计数器:每个集合对象都有一个内部计数器,称为modCount(modificationcount)。每当集合结构被修改(比如添加或删除元素),这个计数器就会增加。迭代器检查:当......