Teniendo en cuenta:Java getMethod con los parámetros de la superclase en el método
class A
{
public void m(List l) { ... }
}
Digamos que quiero invocar el método m
con la reflexión, que pasa a un ArrayList como parámetro a m
:
List myList = new ArrayList();
A a = new A();
Method method = A.class.getMethod("m", new Class[] { myList.getClass() });
method.invoke(a, Object[] { myList });
El getMethod
on line 3 lanzará NoSuchMethodException
porque el tipo de tiempo de ejecución de myList es ArrayList, no List.
¿Existe una buena forma genérica que no requiera el conocimiento de los tipos de parámetros de clase A?
Mis pensamientos exactamente. –
No sé el tipo por adelantado. Esperaría 'm2' en su ejemplo si mi l.getClass() devuelve ArrayList como el tipo de tiempo de ejecución, pero ¿tal vez estoy esperando demasiado? –
exactamente. Pero desea ejecutar el primer método dependiendo de si el segundo existe o no. No puedes hacer eso. – Bozho