使用JavaBean根据指定条件设置属性值默认值方式
更新时间:2022年03月02日 11:21:05 作者:StrKai
这篇文章主要介绍了使用JavaBean根据指定条件设置属性值默认值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
JavaBean根据指定条件设置属性值默认值
使用场景
当bean数据中已经装配好其他数据,在逻辑以及数据转换完成的最后一步进行数据默认值设置;如果bean的属性较少,可以手动写if条件就行了,如果bean的属性太多,你不希望写太多if的时候,这个方法是很不错的方法;
使用范围
仅限于当前类,不能给父类设置值
也是参考了其他博主的方法,做的优化和修改,由于时间过了很长,找不到原博主的参考文献了,请见谅~
/** * @Description: 根据条件,为bean设置默认指定属性 * @param sourceObject 当前需要操作的实体类 * @param targetString 需要被替换的属性的值 * @param defaultValue 被替换的值 * @return: void * @Author: * @Date: 2021/4/26 */ public static void setDefaultValue(Object sourceObject, String targetString, String defaultValue) { if (sourceObject != null) { try { Class<?> clazz = sourceObject.getClass(); Field[] fields = clazz.getDeclaredFields(); Object objectCopy = clazz.getConstructor(new Class[]{}).newInstance(); org.springframework.beans.BeanUtils.copyProperties(sourceObject, objectCopy); for (Field field : fields) { //修饰符 int mod = field.getModifiers(); if (Modifier.isStatic(mod)) { continue; } //属性名称 String fieldName = field.getName(); if (fieldName.equals("serialVersionUID")) { continue; } // 获得属性的首字母并转换为大写,与setXXX对应 String firstLetter = fieldName.substring(0, 1).toUpperCase(); String setMethodName = "set" + firstLetter + fieldName.substring(1); //设置属性的可访问标识 boolean accessible = field.isAccessible(); // log.info("可访问标识:"+accessible); field.setAccessible(true); Method setMethod = clazz.getMethod(setMethodName, field.getType()); Object fieldValueO =field.get(sourceObject); if (targetString!=null){ if (fieldValueO instanceof String){ String fieldValue = (String) field.get(sourceObject); if (targetString.equals(fieldValue)){ setMethod.invoke(objectCopy, defaultValue);//调用对象的setXXX方法 } } }else { Object o = field.get(sourceObject); if (o==null){ setMethod.invoke(objectCopy, defaultValue);//调用对象的setXXX方法 } } field.setAccessible(accessible); } org.springframework.beans.BeanUtils.copyProperties(objectCopy, sourceObject); } catch (Exception e) { throw new RuntimeException(e); } } }
使用示例
setDefaultValue(sourceObject, null, "");//属性值为null的时候设置默认值为空串 setDefaultValue(sourceObject," null", "");//属性值为"null"字符串的时候设置为空串
JavaBean对象成员变量默认值及数组默认值
public class StudentTest { private int id; private String name; int[] arr; public int[] getArr() { return arr; } public void setArr(int[] arr) { this.arr = arr; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class guanxiaokun { public static void main(String[] args) { //对于javaBean对象的成员变量,都有默认值,如果成员变量是基本类型int 默认值为0,如果是引用类型,其默认值为null //数组对象,如果没有进行静态初始化,数组对象其每一个索引位置,如果是存储基本类型,默认值为0,如果存储引用类型,默认值就为null System.out.println(new StudentTest().getId());//0 System.out.println(new StudentTest().getName());//null System.out.println(new StudentTest().getArr());//null int[] arr = new int[3]; String[] str = new String[3]; System.out.println(arr[0]);//0 System.out.println(str[0]);//null } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringMVC中@ModelAttribute与@RequestBody的区别及说明
这篇文章主要介绍了SpringMVC中@ModelAttribute与@RequestBody的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-11-11
最新评论