欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

静态方法通过反射获取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