es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Invocar método con reflexión en Java con lista de parámetros

Actualmente estoy tratando de ejecutar un método a través de Reflections, pero los parámetros del método son solo una lista.

List<object> params = List.of("param1", "param2", 3, "param4");
Method method = getMethod(); // devuelve el método
AppInstance instance = new AppInstance();
method.invoke(instance, params);

El método se ve así:

public void myMethod(String param1, String param2, int param3, String param4){
    //some code
}

pero Java los trata así:

public void myMethod(List<object> params){
    //some code
}

El problema es que la longitud de los parámetros varía, el método puede tener cualquier número de parámetros.

¿Existe alguna forma de resolver este problema?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de resolver este problema. Puede utilizar el parámetro Object[] del método Method.invoke() en lugar de pasar el List<object> como parámetro.

    Puede convertir el List<object> en un arreglo de Object[] utilizando el método List.toArray(). Aquí tienes un ejemplo de cómo hacerlo:

    List<object> params = List.of("param1", "param2", 3, "param4");
    Method method = getMethod(); // devuelve el método
    AppInstance instance = new AppInstance();
    
    Object[] paramArray = params.toArray(new Object[params.size()]);
    method.invoke(instance, paramArray);
    

    De esta manera, puedes pasar cualquier número de parámetros al método utilizando Reflections.

Comments are closed.