Java動態呼叫實體的get方法
阿新 • • 發佈:2021-10-26
/** * 動態呼叫實體的get方法(注意返回值) * @param dto 實體 * @param name 動態拼接欄位 * @return {@link String} * @date 2021/10/26 11:06 * @version 1.0.0 <br/> **/ public static String getValue(Object dto, String name) { String val = "無資料"; try { if (StringUtils.isEmpty(name)) return val; Method m = dto.getClass().getMethod(("get" + toUpperCase4Index(name))); // 呼叫getter方法獲取屬性值 //java.sql.Timestamp型別轉換 if (m.getGenericReturnType().equals(java.sql.Timestamp.class)){ String format = DateUtil.format(DateUtil.timeToDate((Timestamp) m.invoke(dto)), DateUtil.YMD_DASH_WITH_TIME); val = null == format ? "無資料": format; //java.util.Date型別轉換 }else if (m.getGenericReturnType().equals(java.util.Date.class)){ String format = DateUtil.format((Date) m.invoke(dto), DateUtil.YMD_DASH_WITH_TIME); val = null == format ? "無資料": format; }else { val = StringUtils.isNotEmpty((String)m.invoke(dto)) ? (String)m.invoke(dto) : "無資料"; } } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } return val; }