Дано:Java getMethod с суперкласса параметров в методе
class A
{
public void m(List l) { ... }
}
Скажем, я хочу, чтобы вызвать метод m
с отражением, передавая ArrayList в качестве параметра m
:
List myList = new ArrayList();
A a = new A();
Method method = A.class.getMethod("m", new Class[] { myList.getClass() });
method.invoke(a, Object[] { myList });
getMethod
на линии 3 будет вызывать NoSuchMethodException
, потому что тип времени выполнения myList - это ArrayList, а не List.
Есть ли общий общий способ вокруг этого, который не требует знания типов параметров класса А?
Мои мысли точно. –
Я не знаю тип заранее. Я бы ожидал 'm2' в вашем примере, если мой l.getClass() возвращает ArrayList как тип времени выполнения, но, может быть, я ожидаю слишком многого? –
точно. Но вы хотите выполнить первый метод в зависимости от того, существует ли вторая или нет. Вы не можете этого сделать. – Bozho