Java动态调用实体的get方法

    /**
    * 动态调用实体的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;
    }
posted @ 2021-10-26 19:17  fxsen  阅读(431)  评论(0编辑  收藏  举报