好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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根据指定条件设置属性值默认值方式的详细内容...

  阅读:22次