通过反射根据属性名从对象里获取属性值

当我们需要从一个对象里面,每次获取不同属性,那么我们是不是要 单独写N个方法呢?

例如:class 有  下发标识、删除标识、类型标识等等 我们不同的场景只需要查询这个类的一个标识,那么是不是每个查询标识都搞一个方法呢?

   public String getAttribute1(String key) {

        // 根据key查出对象,然后从对象里面get这个属性返回
        Entity entity = getSQL()
                
        if (null == entity) {
            return "";
        } else {
            return entity .getAttribute1();
        }
    }

    public String getAttribute2(String key) {

        // 根据key查出对象,然后从对象里面get这个属性返回
        Entity entity = getSQL()
                
        if (null == entity) {
            return "";
        } else {
            return entity .getAttribute2();
        }
    }

这样我们可能要写多个,并且后续加一个 就要写一个 

现在我们可以通过反射动态的去控制要返回的字段,代码如下:

    /** 
     * 功能描述: 
* * @param key 查询条件 * @param name 需要获取的字段名,和DO里面属性命名一致 例如:"applyCode"、"distriModel" * @return java.lang.String */ public String getAttribute(String key, String name) { SmallshopSupplierCmlistDO entity = getsql(); if (null == entity) { return ""; } else { return getAttribute(entity, name); } } // 静态工具方法 获取对象的属性值 public static String getAttribute(Object entity, String field) { String r = ""; try { // 类对象反射,获取到指定字段对象反射对象 Field f = entity.getClass().getDeclaredField(field); // true表示反射的对象应禁止Java语言访问使用时进行检查。值false表示所反射的对象应强制执行Java语言访问检查。 f.setAccessible(true); r = f.get(entity).toString(); } catch (Exception e) { logger.error("CmUtils.getAttribute获取失败", e); } return r; }

知识点:类反射获取字段

你可能感兴趣的:(JAVA,java,反射)