¿Cómo llamar a un método con parámetros variables mediante la reflexión de Java?
La forma en que la reflexión JAVA llama a métodos con parámetros variables es pasando parámetros de objeto, como el siguiente código: public?class?Reflect?{
public?static?void?main( String[]?args)?throws?Exception?{
Classlt;? gt;?clazz?=?Single.class;
¿Single?single?=?(Single)? clazz.newInstance();
Listlt;Stringgt;?list?=?new?ArrayListlt;Stringgt;(){
privado? , ?0).getClass());
/*?2?*/
método?=?clazz.getDeclaredMethod("método",?(new?Object[0 ] ).getClass());
//Inicializar argumentos
/*?1?*/
Objeto?objs?=?Array.newInstance( Objeto .class,?2);
Array.set(objs,?0,?list);
Array.set(objs,?1,?" 23");
method.invoke(single,?objs);
/*?2?*/
Objeto[]?objects?=?{1,? " joder",?lista};
method.invoke(single,?new?Object[]{?objects?});
}
}
¿clase?Única?{
¿público?método void?(Objeto... ?objs)?{
System.out.println(Arrays.deepToString ( objs));
}
}
Resultados:
[[joder,?ni,?mei],?23 ]
[1,?cao, ni, m]]
[1,?