使用JavaBean根据指定条件设置属性值默认值方式

网友投稿 448 2022-10-25

使用JavaBean根据指定条件设置属性值默认值方式

目录javaBean根据指定条件设置属性值默认值使用场景使用范围使用示例JavaBean对象成员变量默认值及数组默认值

JavaBean根据指定条件设置属性值默认值

使用场景

当bean数据中已经装配好其他数据,在逻辑以及数据转换完成的最后一步进行数据默认值设置;如果bean的属性较少,可以手动写if条件就行了,如果bean的属性太多,你不希望写太多if的时候,这个方法是很不错的方法;

使用范围

仅限于当前类,不能给父类设置值

也是参考了其他博主的方法,做的优化和修改,由于时间过了很长,找不到原博主的参考文献了,请见谅~

/**

* @Description: 根据条件,为bean设置默认指定属性

* @param sourceObject 当前需要操作的实体类

* @param targetString 需要被替换的属性的值

* @param defaultValue 被替换EhXcrqQ的值

* @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);

EhXcrqQ 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.prihttp://ntln(arr[0]);//0

System.out.println(str[0]);//null

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:K8s环境下Nginx容器的自动热更新实战
下一篇:把设备分享给每个Docker Container
相关文章

 发表评论

暂时没有评论,来抢沙发吧~