使用反射从集合类获取对象

拉胡尔·塔奇拉斯(Rahul Thachilath)

我一直在搜索有关Java中的Reflection API的几天。我想从传递的对象内的Collection类变量中获取所有对象。

例如

public static <S>void getValue(S s)throws Exception
{
    Field[] sourceFields = s.getClass().getDeclaredFields();
    for (Field sf : sourceFields) 
    {
        boolean sa = sf.isAccessible();
        sf.setAccessible(true);

        String targetMethodName = "get" + source.getName().substring(0, 1).toUpperCase()
                + (source.getName().substring(1));
        Method m = s.getClass().getMethod(targetMethodName, null) ;
        Object ret = m.invoke(s, new Object[] {});

        //ret 
        //check whether it is collection
        //if yes
        //get its generic type
        Type type = f.getGenericType();

        //get all the objects inside it

        sf.setAccessible(sa);
    }
}
约翰·B

我觉得这里的问题是,ret可能是任何类型的收藏:ListSetMapArray,自定义类实现集合。一个List可能是ArrayListLinkedList或任何其他类型的List实现。获取List通孔反射的内容将不起作用。我建议您支持以下某些收集类型:

 Object[] containedValues;
 if (ref instanceof Collection)
     containedValues = ((Collection)ref).toArray();
 else if (ref instanceof Map)
     containedValues = ((Map)ref).values().toArray();
 else if (ref instanceof Object[])
     containedValues = (Object[])ref;
 else if (ref instanceof SomeOtherCollectionTypeISupport)
     ...

然后,您可以使用数组中的元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用反射,获取对象的父类/字段

来自分类Dev

使用反射和getCount(.net 4)从对象获取集合

来自分类Dev

如何使用反射从字段/类中获取对象?

来自分类Dev

使用反射检查类中的集合

来自分类Dev

使用反射检索对象的类名

来自分类Dev

如何在运行时使用反射从类的对象获取属性的值

来自分类Dev

使用反射将类中的所有静态属性作为对象获取VB.NET

来自分类Dev

使用反射按顺序获取类的属性

来自分类Dev

使用Java反射获取类数组的类型

来自分类Dev

使用Java反射获取类数组的类型

来自分类Dev

使用反射获取用户声明的类

来自分类Dev

使用通用类型对象的反射获取属性

来自分类Dev

使用反射从列表中获取对象

来自分类Dev

如果对象类是使用Java反射在字段上的数组,则无法获取包和类名

来自分类Dev

如何使用反射获取对象字段的对象引用?

来自分类Dev

使用反射将未知对象转换为泛型类

来自分类Dev

使用Java反射获取接口字段的具体类

来自分类Dev

使用反射从父类获取自己的属性名称

来自分类Dev

使用反射获取在Scala中实现特征的所有类

来自分类Dev

使用反射获取继承接口的类的属性

来自分类Dev

如何使用Scala反射获取声明的类/特征?

来自分类Dev

使用反射获取类内列表属性的count属性值

来自分类Dev

如何在WinRT中使用反射获取类的静态属性

来自分类Dev

如何通过使用反射获取匿名类字段

来自分类Dev

使用反射从类库获取app.dispatcher

来自分类Dev

使用Swift进行反射-获取类的函数名称

来自分类Dev

使用反射获取具有原始类型参数的类的方法

来自分类Dev

如何使用Ember ArrayController获取对象集合?

来自分类Dev

使用键 VBA 获取集合内的对象

Related 相关文章

  1. 1

    使用反射,获取对象的父类/字段

  2. 2

    使用反射和getCount(.net 4)从对象获取集合

  3. 3

    如何使用反射从字段/类中获取对象?

  4. 4

    使用反射检查类中的集合

  5. 5

    使用反射检索对象的类名

  6. 6

    如何在运行时使用反射从类的对象获取属性的值

  7. 7

    使用反射将类中的所有静态属性作为对象获取VB.NET

  8. 8

    使用反射按顺序获取类的属性

  9. 9

    使用Java反射获取类数组的类型

  10. 10

    使用Java反射获取类数组的类型

  11. 11

    使用反射获取用户声明的类

  12. 12

    使用通用类型对象的反射获取属性

  13. 13

    使用反射从列表中获取对象

  14. 14

    如果对象类是使用Java反射在字段上的数组,则无法获取包和类名

  15. 15

    如何使用反射获取对象字段的对象引用?

  16. 16

    使用反射将未知对象转换为泛型类

  17. 17

    使用Java反射获取接口字段的具体类

  18. 18

    使用反射从父类获取自己的属性名称

  19. 19

    使用反射获取在Scala中实现特征的所有类

  20. 20

    使用反射获取继承接口的类的属性

  21. 21

    如何使用Scala反射获取声明的类/特征?

  22. 22

    使用反射获取类内列表属性的count属性值

  23. 23

    如何在WinRT中使用反射获取类的静态属性

  24. 24

    如何通过使用反射获取匿名类字段

  25. 25

    使用反射从类库获取app.dispatcher

  26. 26

    使用Swift进行反射-获取类的函数名称

  27. 27

    使用反射获取具有原始类型参数的类的方法

  28. 28

    如何使用Ember ArrayController获取对象集合?

  29. 29

    使用键 VBA 获取集合内的对象

热门标签

归档