gpt4 book ai didi

java - 使用反射调用方法/将列表转换为 Var Args

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:33:33 25 4
gpt4 key购买 nike

我有一个参数列表和方法名称。我想使用反射调用该方法。 当我检查 java 文档中的 Method.invoke 时,它​​就像 Method.invoke(object o, Object args...) 。 我知道要为第一个参数传递什么(即如果实例方法是在哪个方法上调用的实例)并且 args 是该方法的参数。

但现在我有了包含要传递给方法的值的列表。

例如:我想调用方法 ClassName.methodName(String , int, int) 并且我有一个包含 {val1, 3, 4} 的列表。

使用反射可能类似于 Method.invoke (classNameInstance, ??????)。但我不确定如何将参数列表转换为可变参数并传递。

一种方法可能是如果我知道列表大小为 3,那么我可以编写 Method.invoke (classNameInstance, list.get(0), list.get(1), list.get(2))。

但是我想动态调用的一些方法需要 0 到 12 个参数。因此,创建 switch case 并编写 12 个 case 看起来并不“好”。每个都将检查参数数量并使用参数构建单独的调用。

除了使用 switch case 之外,还有什么办法可以解决这个问题?

任何帮助将不胜感激。

最佳答案

Notation Object... 无非就是 Object[]。它只是 Arraynotation 的语法糖。传递一个数组,它将起作用。

关于java - 使用反射调用方法/将列表转换为 Var Args,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6368684/

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