很高兴认识您。 我需要一些有关Java8上的代码的建议。
我有这种方法
public Object method (String objectName, List<ParamData> paramsList)
paramList可以在其中包含一个或多个对象,然后我调用Method类的一个对象的invoke方法。
// params must be the objects that paramList have
object = find.invoke(class, params);
invoke方法可以获取一个或多个参数,我想向其发送参数paramList中具有的对象,但是每次可以是不同数量的对象,以及可以接收一个参数的不同Method实例。 ,两个...而且我不知道是否有某种方法可以在运行时填充此参数,但不是数组。
如果您能给予我任何帮助,我将不胜感激。 非常感谢。
我只尝试向其发送显然不起作用的该params对象的列表,此刻我意识到的其他想法都将不起作用。
答案 0 :(得分:0)
在Method
类中,invoke()
定义为:
public Object invoke(Object obj, Object... args)
因此,您所需要做的就是将您操纵的List
转换为数组:List.toArray()
做到了。
然后将其传递到invoke()
,例如:
public Object method (String objectName, List<ParamData> paramsList){
ParamData[] params = paramsList.toArray(new ParamData(paramsList.size()));
// ...
Method method = ...
method.invoke(obj, params);
}
作为旁注,这是一种动态填充数组的方法:从源(列表)到数组,但是您还有其他方法可以用诸如Arrays.fill(Object[] a, Object val)
之类的对象动态填充数组。此处的区别在于,它使用相同的对象引用val
填充了数组元素。这不是您的要求:您想从数据源(列表)中进行填充。