Я пишу подпрограмму для вызова методов, найденных по имени и массиву значений параметров класса
Сопоставление метода с помощью getName работает, но при попытке сопоставить данный класс [] для параметров и Method.getParameterTypes () у меня возникают проблемы.
Я предполагал, что это будет работать:
<code>
Class[] searchParams = new Class[] { float.class, String.class };
Class[] methodParams = m.getParameterTypes();</p>
<p>if(methodParams == searchParams) {
m.invoke(this, paramValues);
}
Но, очевидно, нет - m.invoke никогда не достигается. Я проверил, и methodParams предоставляет те же классы, что и searchParams.
Приведенный ниже код работает и выбирает правильный метод, но он выглядит очень грязным способом, я уверен, что упускаю что-то очевидное.
<code>
Class[] searchParams = new Class[] { float.class, String.class };
Class[] methodParams = m.getParameterTypes();</p>
<p>boolean isMatch = true;
for(int i = 0; i < searchParams.length; i++) {
if(!searchParams.getClass().equals(methodParams.getClass())) {
isMatch = false;
}
}</p>
<p>if(isMatch) {
m.invoke(this, paramValues);
}