Подтвердить что ты не робот

Class.getMethod, когда параметр varargs

Мне нужно вызвать Class.getMethod(java.lang.String, java.lang.Class...), чтобы получить способ, одним из параметров varargs является varargs.

В настоящее время я пытаюсь:

// 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)

Как я могу это сделать?

4b9b3361

Ответ 1

Вместо этого вам необходимо указать тип массива:

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

В основном параметр varargs представляет собой массив, просто с дополнительным битом метаданных, сообщающим компилятору, чтобы этот массив указывался как последовательность элементов вместо одного выражения.