gpt4 book ai didi

java - 我可以在java中动态填充args[]参数吗?

转载 作者:行者123 更新时间:2023-12-02 02:50:53 25 4
gpt4 key购买 nike

我需要一些关于 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 中的对象,但每次都可以是不同数量的对象和不同的方法例如,它可以接收一个参数,两个参数......我不知道是否有某种方法可以在运行时填充这些参数,但不是一个数组。

我将非常感谢您能给我的任何帮助。

非常感谢。

我只是尝试向它发送一个显然不起作用的 params 对象列表,我当时意识到的其他想法是行不通的。

最佳答案

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。这不是您的要求:您想从数据源(列表)填充。

关于java - 我可以在java中动态填充args[]参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57109650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com