当参数为 varargs 时的 Class.getMethod

发布于 2024-11-01 10:47:13 字数 793 浏览 0 评论 0原文

我需要调用 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)

我该如何做到这一点?

I need to call Class.getMethod(java.lang.String, java.lang.Class...) to get a method where one of the varargs parameters is a varargs.

Currently I'm trying:

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

Which results, not surprisingly in

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)

How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱情眠于流年 2024-11-08 10:47:13

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

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

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

You need to provide an array type instead:

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

Basically a varargs parameter is an array, just with an extra bit of metadata telling the compiler to allow that array to be specified as a sequence of elements instead of a single expression.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文