/** * 獲取對象中的字段 * @param obj which object you want to find filed * @param fieldName the field name you want to find * @return the field you want to find * @throws Throwable * @throws NoSuchFieldException */ protected Field getField(Object obj,String fieldName) throws NoSuchFieldException { Class clzz = obj.getClass(); Field[] fields = clzz.getDeclaredFields(); Field dest = null; while (!hasField(fields,fieldName) && !clzz.getName().equalsIgnoreCase("java.lang.Object")) { clzz = clzz.getSuperclass(); fields = clzz.getDeclaredFields(); } if (hasField(fields,fieldName)) { dest = clzz.getDeclaredField(fieldName); } else { throw new NoSuchFieldException("類中沒有此字段"); } return dest; } /** * 判斷對象中是否有要找的字段 * @param fields the fields which you want to find * @param fieldName the field name you want to find * @return if the field in field return true else return false */ private boolean hasField(Field[] fields, String fieldName) { for (int i = 0; i < fields.length ;i ++) { if (fields[i].getName().equals(fieldName)) { return true; } } return false; }