¿Cómo utilizo un método de una clase que llegué a través de Class.forName (String)?

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 Classcon 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));

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=332197&siteId=1
Recomendado
Clasificación