Java反射-判斷實體屬性是否爲空

1、利用Java反射技術 判斷傳入實體的屬性值是否爲空

/**
 * @author wyy
 * @version 1.0
 * @date 2019/7/19 16:52
 * @description 實體屬性遍歷工具
 **/
public class EntityTraversalUtils {
    /**
     * 傳入實體可以對實體屬性進行遍歷
     * 判斷實體屬性是否爲空
     *
     * @param model
     * @return
     */
    public static Boolean judgeClassmentsIsNull(Object model) {
        // model換成需要遍歷的實體
        // 獲取實體類的所有屬性,返回Field數組
        Field[] field = model.getClass().getDeclaredFields();
        try {
            // 遍歷所有屬性
            for (int j = 0; j < field.length; j++) {
                // 獲取屬性的名字
                String name = field[j].getName();
                // 將屬性的首字符大寫,方便構造get,set方法
                name = name.substring(0, 1).toUpperCase() + name.substring(1);
                // 獲取屬性的類型
                String type = field[j].getGenericType().toString();
                // 如果type是類類型,則前面包含"class ",後面跟類名
                if ("class java.lang.String".equals(type)) {
                    Method m = model.getClass().getMethod("get" + name);
                    // 調用getter方法獲取屬性值
                    String value = (String) m.invoke(model);
                    if (value == null || "".equals(value)) {
                        return false;
                    }
                }
                if ("class java.lang.Integer".equals(type)) {
                    Method m = model.getClass().getMethod("get" + name);
                    Integer value = (Integer) m.invoke(model);
                    if (value == null) {
                        return false;
                    }
                }
                if ("class java.lang.Boolean".equals(type)) {
                    Method m = model.getClass().getMethod("get" + name);
                    Boolean value = (Boolean) m.invoke(model);
                    if (value == null) {
                        return false;
                    }
                }
                if ("class java.util.Date".equals(type)) {
                    Method m = model.getClass().getMethod("get" + name);
                    Date value = (Date) m.invoke(model);
                    if (value == null) {
                        return false;
                    }
                }
                if ("class java.math.BigDecimal".equals(type)) {
                    Method m = model.getClass().getMethod("get" + name);
                    BigDecimal value = (BigDecimal) m.invoke(model);
                    if (value == null) {
                        return false;
                    }
                }
                if ("java.util.List<com.djcps.manage.supplier.line.model.LinePaperSizeModel>".equals(type)) {
                    Method m = model.getClass().getMethod("get" + name);
                    List value = (List) m.invoke(model);
                    if (value.size() == 0) {
                        return false;
                    }
                }
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return true;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章