简体   繁体   English

无法创建ArrayList的数组 <Object> 元素,将对象列表作为参数传递

[英]Cannot create an Array of ArrayList<Object> elements, passing list of Objects as a parameter

This is my code and it works: 这是我的代码,它可以工作:

Value[] params2 = {val};
Class<?> clazz = Class.forName("package." + className);
Method[] thisMethod = clazz.getMethods();
thisMethod[0].invoke(clazz.newInstance(), new Object[]{params2});

However when I try to send list of 'val' objects as a parameter, 但是,当我尝试发送“ val”对象列表作为参数时,

List<Value>[] params2 = {valList};

I get: 'Cannot create a generic array of List error' 我得到:'无法创建列表错误的通用数组'

How can I pass list of val objects as a paramter? 如何将val对象列表作为参数传递?

You need to pass an array of arguments to invoke a method reflectively, not a List of arguments. 您需要传递参数数组来反射地调用方法,而不是参数List If you have a List , use its toArray() method. 如果您有List ,请使用其toArray()方法。

List<Value>[] means array where members of this array are lists. List<Value>[]表示该数组的成员为列表的数组。 Ie. 就是 {new ArrayList<Value>()} is the instance. {new ArrayList<Value>()}是实例。 If your methods takes as an argument a list, this is the way. 如果您的方法将列表作为参数,那么就是这样。 Otherwise you should convert the list of params to array, because that is how the Java reflection API was designed. 否则,应将参数列表转换为数组,因为这是Java反射API的设计方式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM