import org.apache.commons.lang.StringUtils; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * 判斷對象是否爲空 * @param obj * @return */ public static Boolean isNotEmptyBean(Object obj) { Boolean flag = false; try { if (null != obj){ //獲得類對象 Class<?> c = (Class<?>) obj.getClass(); //獲得屬性集合 Field[] fs = c.getDeclaredFields(); //獲得方法體集合 Method[] methods = c.getDeclaredMethods(); //遍歷屬性 for (Field f : fs) { //設置屬性是能夠訪問的(私有的也能夠) f.setAccessible(true); String fieldGetName = parGetName(f.getName()); //判斷屬性是否存在get方法 if (!checkGetMet(methods, fieldGetName)) { continue; } //獲得此屬性的值 Object val = f.get(obj); //只要有1個屬性不爲空,那麼就不是全部的屬性值都爲空 if (isNotEmpty(val)) { flag = true; break; } } } } catch (Exception e) { log.error("判斷對象是否爲空出錯:" + e.getMessage()); } return flag; } /** * 拼接某屬性的 get方法 * @param fieldName * @return String */ public static String parGetName(String fieldName) { if (null == fieldName || "".equals(fieldName)) { return null; } int startIndex = 0; if (fieldName.charAt(0) == '_') startIndex = 1; return "get" + fieldName.substring(startIndex, startIndex + 1).toUpperCase() + fieldName.substring(startIndex + 1); } /** * 判斷是否存在某屬性的 get方法 * @param methods * @param fieldGetMet * @return boolean */ public static Boolean checkGetMet(Method[] methods, String fieldGetMet) { for (Method met : methods) { if (fieldGetMet.equals(met.getName())) { return true; } } return false; }