当方法 m 是(,其中m是使用反射调用的方法)
public static Optional<JsonNode> concat(ObjectNode entity, String separator, String fieldName1,
String fieldName2)
然后我能够得到计算值(,其中计算值是使用反射获得的值)
当方法 m
时public static Optional<JsonNode> concat(ObjectNode entity, String ...separatorAndField)
然后我无法获得计算值
我按如下方式调用方法: -
computedValue = (Optional<JsonNode>) m.invoke(null, methodArgs);
注意: - methodArgs被声明为对象数组。
答案 0 :(得分:1)
这是通过反射调用varargs和非varargs静态方法之间的区别:
class Main
{
public static void foo(String fieldName1, String fieldName2)
{
System.out.println(fieldName1 + "," + fieldName2);
}
public static void bar(String... fields)
{
System.out.println(String.join(",", fields));
}
public static void main(String[] args) throws Exception
{
final Method foo = Main.class.getMethod("foo", String.class, String.class);
foo.invoke(null, "aaa", "bbb");
final Method bar = Main.class.getMethod("bar", String[].class);
bar.invoke(null, (Object) new String[] {"ccc", "ddd", "eee"});
}
}
输出:
aaa,bbb
ccc,ddd,eee