调用method.invoke(...)传递List <map <string,object>&gt;作为论点

时间:2015-11-14 18:31:18

标签: java reflection

我试图通过反射调用这个方法,但我没有成功。

Method method = App.class.getDeclaredMethod("imp" + tipTransa,
                        Connection.class,                       // connection
                        String.class,                           // token
                        String.class,                           // tipTransa
                        String.class,                           // tipOpe
                        String.class,                           // msgGuid
                        List<Map<String,Object>>.getClass());   // this is the problem
method.setAccessible(true);
method.invoke(null, conn, token, tipTransa, tipOpe, msgGuid, data);

如何解决List<Map<String,Object>>.getClass()问题?

3 个答案:

答案 0 :(得分:2)

在运行时,任何其他类型的List<Map<String,Object>>List<Double>List之间没有区别,因为通用类型信息已被删除。

您可以使用List.class

答案 1 :(得分:2)

使用原始类型:

List.class

Method method = App.class.getDeclaredMethod("imp" + tipTransa,
                    Connection.class,                       // connection
                    String.class,                           // token
                    String.class,                           // tipTransa
                    String.class,                           // tipOpe
                    String.class,                           // msgGuid
                    List.class);

答案 2 :(得分:2)

泛型不存在于运行时(或者更准确地说,它们在编译时是erased),因此不需要包含泛型类型的运行时文字。

而不是

List<Map<String,Object>>.getClass() 

使用

List.class