当我们需要从一个对象里面,每次获取不同属性,那么我们是不是要 单独写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();
}
}
这样我们可能要写多个,并且后续加一个 就要写一个
现在我们可以通过反射动态的去控制要返回的字段,代码如下:
/**
* 功能描述: <br>
*
* @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;
}
知识点:类反射获取字段