首页 技术 正文
技术 2022年11月9日
0 收藏 648 点赞 5,002 浏览 2397 个字
java利用反射获取类的属性及类型。import java.lang.reflect.Field;import java.math.BigDecimal;import java.util.Map;import org.apache.commons.lang.StringUtils;import org.hibernate.Criteria;import org.hibernate.criterion.Order;import org.hibernate.criterion.Restrictions;import org.jeecgframework.core.common.dao.impl.CommonDao;import org.jeecgframework.core.common.service.impl.CommonServiceImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cache.annotation.CacheEvict;import org.springframework.stereotype.Service;        Field[] fields = c.getDeclaredFields();//获取实体类的所有属性,返回Field数组        for (int j = 0; j < fields.length; j++) { // 遍历所有属性                String attrNname = fields[j].getName(); // 获取属性的名字                if(attrNname.indexOf("beizhu")!=-1){//如果有备注 则按备注排序 路桥使用                    System.out.println("ok");                    break;                }          }现在需要把通过webService传过来的实体Person里面的所有字段的null值,换成""实现思路:1.获取实体的所有字段,遍历2.获取字段类型3.调用字段的get方法,判断字段值是否为空4.如果字段值为空,调用字段的set方法,为字段赋值code:        Field[] field = model.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组        try {            for (int j = 0; j < field.length; j++) { // 遍历所有属性                String name = field[j].getName(); // 获取属性的名字                name = name.substring(0, 1).toUpperCase() + name.substring(1); // 将属性的首字符大写,方便构造get,set方法                String type = field[j].getGenericType().toString(); // 获取属性的类型                if (type.equals("class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名                    Method m = model.getClass().getMethod("get" + name);                    String value = (String) m.invoke(model); // 调用getter方法获取属性值                    if (value == null) {                        m = model.getClass().getMethod("set"+name,String.class);                        m.invoke(model, "");                    }                }                if (type.equals("class java.lang.Integer")) {                    Method m = model.getClass().getMethod("get" + name);                    Integer value = (Integer) m.invoke(model);                    if (value == null) {                        m = model.getClass().getMethod("set"+name,Integer.class);                        m.invoke(model, 0);                    }                }                if (type.equals("class java.lang.Boolean")) {                    Method m = model.getClass().getMethod("get" + name);                    Boolean value = (Boolean) m.invoke(model);                    if (value == null) {                        m = model.getClass().getMethod("set"+name,Boolean.class);                        m.invoke(model, false);                    }                }                if (type.equals("class java.util.Date")) {                    Method m = model.getClass().getMethod("get" + name);                    Date value = (Date) m.invoke(model);                    if (value == null) {                        m = model.getClass().getMethod("set"+name,Date.class);                        m.invoke(model, new Date());                    }                }         // 如果有需要,可以仿照上面继续进行扩充,再增加对其它类型的判断            }        } catch (NoSuchMethodException e) {            e.printStackTrace();        } catch (SecurityException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (IllegalArgumentException e) {            e.printStackTrace();        } catch (InvocationTargetException e) {            e.printStackTrace();        }
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849