java - 参数为可变参数时的 Class.getMethod

标签 java reflection variadic-functions

我需要调用 Class.getMethod(java.lang.String, java.lang.Class...)获取其中一个可变参数是可变参数的方法。

目前我正在尝试:

// to get jdbcTemplate.queryForObject(RowMapper, Object...)
jdbcTemplate.getClass().getMethod("queryForObject", RowMapper.class, Object.class);

结果,不足为奇

Caused by: java.lang.NoSuchMethodException: org.springframework.jdbc.core.simple.SimpleJdbcTemplate.queryForObject(java.lang.String,     org.springframework.jdbc.core.RowMapper, java.lang.Object)
at java.lang.Class.throwNoSuchMethodException(Class.java:283)
at java.lang.Class.getMethod(Class.java:825)

我该怎么做?

最佳答案

您需要提供一个数组类型:

getMethod("queryForObject", RowMapper.class, Object[].class);

基本上,可变参数一个数组,只是带有一些额外的元数据,告诉编译器允许将该数组指定为元素序列而不是单个表达式。

关于java - 参数为可变参数时的 Class.getMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672778/

相关文章:

java - 这个输出正确吗?或者这是一个错误?

java - 使用除 SINGLE_TABLE 之外的任何其他 Hibernate 继承策略时 JVM 崩溃

java - 如何使用 OS X 2012-006 的 Java 取回 OS X 中的 Java 首选项?

pointers - Go中如何从reflect.Value获取指针?

java - 如何将列表的内容传递给可变参数方法?

java - -source 1.5 [错误] 不支持 switch 中的字符串(使用 -source 7 或更高版本启用 switch 中的字符串)

Java - 调用类的所有方法

java - 我可以反射性地实例化 java 中的泛型类型吗?

c - 如何判断一个可选参数是否传递给函数 C

java - 为什么要在 Java Stream 接口(interface)中重载 varargs 方法 of()?