1. 程式人生 > >將物件中的屬性為null的值轉為空字串

將物件中的屬性為null的值轉為空字串

通過反射的方式獲取到物件,然後如果物件的屬性為String的,如果為null則轉為空字串。

可以根據需要根據不同的屬性型別則賦予不同的值。

    public static Object checkNull(Object obj) {
        Class<? extends Object> clazz = obj.getClass();
        // 獲取實體類的所有屬性,返回Field陣列
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            // 可訪問私有變數
            field.setAccessible(true);
            // 獲取屬性型別
            String type = field.getGenericType().toString();
            // 如果type是類型別,則前面包含"class ",後面跟類名
            if ("class java.lang.String".equals(type)) {
                // 將屬性的首字母大寫
                String methodName = field.getName().replaceFirst(field.getName().substring(0, 1),
                        field.getName().substring(0, 1).toUpperCase());
                System.out.println(methodName);
                try {
                    Method methodGet = clazz.getMethod("get" + methodName);
                    // 呼叫getter方法獲取屬性值
                    String str = (String) methodGet.invoke(obj);
                    if (StringUtils.isBlank(str)) {
                        // Method methodSet = clazz.getMethod("set" +
                        // methodName, new Class[] { String.class });
                        // methodSet.invoke(o, new Object[] { "" });
                        System.out.println(field.getType()); // class java.lang.String
                        // 如果為null的String型別的屬性則重新複製為空字串
                        field.set(obj, field.getType().getConstructor(field.getType()).newInstance(""));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return obj;
    }