JavaBean根据指定条件设置属性值默认值
使用场景
当bean数据中已经装配好其他数据,在逻辑以及数据转换完成的最后一步进行数据默认值设置;如果bean的属性较少,可以手动写if条件就行了,如果bean的属性太多,你不希望写太多if的时候,这个方法是很不错的方法;
使用范围
仅限于当前类,不能给父类设置值
也是参考了其他博主的方法,做的优化和修改,由于时间过了很长,找不到原博主的参考文献了,请见谅~
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
/** * @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); } } } |
使用示例
|
1 2 |
setDefaultValue(sourceObject, null , "" ); //属性值为null的时候设置默认值为空串 setDefaultValue(sourceObject, " null" , "" ); //属性值为"null"字符串的时候设置为空串 |
JavaBean对象成员变量默认值及数组默认值
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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 } } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
原文链接:https://blog.csdn.net/qq_25381015/article/details/116198594
查看更多关于使用JavaBean根据指定条件设置属性值默认值方式的详细内容...