静态方法通过反射获取list集合
程序员文章站
2022-04-15 19:05:29
静态方法工具 /** * 反射获取对象中的list数据 * * @param object */ public static List getList(Field field, Object object) { List resultList = new ArrayList<>(); if (object != null) { t...
静态方法工具
/**
* 反射获取对象中的list数据
*
* @param object
*/
public static <T> List<T> getList(Field field, Object object) {
List<T> resultList = new ArrayList<>();
if (object != null) {
try {
Class clzz = field.get(object).getClass();
//反射调用获取到list的size方法来获取到集合的大小
Method sizeMethod = clzz.getDeclaredMethod("size");
if (!sizeMethod.isAccessible()) {
sizeMethod.setAccessible(true);
}
//集合长度
int size = (int) sizeMethod.invoke(field.get(object));
//循环遍历获取到数据
for (int i = 0; i < size; i++) {
//反射获取到list的get方法
Method getMethod = clzz.getDeclaredMethod("get", int.class);
//调用get方法获取数据
if (!getMethod.isAccessible()) {
getMethod.setAccessible(true);
}
Object invoke = getMethod.invoke(field.get(object), i);
T var1 = (T) invoke;
resultList.add(var1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return resultList;
}
备注
其中的 “field” 是 object 对象中的属性对应的 Field,field参数也可以改为String类型的参数名字,然后从object中获取该Field
链接:一个通用的获取参数值得切面( aop+反射+泛型 支持参数值比较深的情况)
本文地址:https://blog.csdn.net/Draymond_feng/article/details/107691882