tipsi:
Necesito utilizar un método de una clase que obtuve a través del método Class.forName (). Te voy a dar un ejemplo:
public class Greeter {
public String getGreeting() {
return "Hello World!";
}
}
Ahora quiero obtener dinámicamente esta clase mediante una cadena y lo uso del método de este modo:
Class c = Class.forName("Greeter");
System.out.println(c.getGreeting());
Ahora bien, esto obviamente no funcionó, porque Java no reconoce la clase como clase Greeter todavía. ¿Cómo voy a ir haciendo esto sin tener que codificar el hecho de que se trata de una clase Greeter?
Elliott fresca:
No directamente, se necesitaría una instancia de la Class
con el fin de invocar el método. Por ejemplo,
Class<?> cls = Class.forName("Greeter");
try {
Object o = cls.getConstructor(null).newInstance(null);
System.out.println(((Greeter) o).getGreeting());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Usted menciona en los comentarios que usted no "sabe" que es una Greeter
. Usted debe programar a una interfaz común, pero en su defecto; es posible conseguir el método por el nombre también. Por ejemplo,
Object o = cls.getConstructor(null).newInstance(null);
Method m = cls.getMethod("getGreeting", null);
System.out.println(m.invoke(o, null));