Je me demande simplement s'il est possible d'invoquer une méthode par réflexion à l'intérieur d'un thread. Mon idée est de passer au constructeur du thread un nom de méthode, c'est ainsi que je voudrais spécifier ce que le thread devrait faire (quelle méthode devrait être exécutée). Le code ci-dessous ne fonctionne pas - j'obtiens une erreur "ClassNotFoundException".Réflexion Java - invoquer la méthode à l'intérieur du thread
public class Listener extends Thread {
/** Constructor */
private static Window win = new Window();
private static Class c;
private String parameter;
public Listener(String param) {
this.parameter = param;
}
public void run() {
try {
Class c = Class.forName("Listener");
Class partypes[] = new Class[1];
partypes[0] = String.class;
Method meth = c.getMethod("waitForWindowAppear", partypes);
Listener methobj = new Listener(parameter);
Object arglist[] = new Object[1];
arglist[0] = parameter;
Object retobj = meth.invoke(methobj, arglist);
Integer retval = (Integer) retobj;
System.out.println(retval.intValue());
} catch (Exception e) {
e.printStackTrace();
}
}
/** Method waits as a thread for window at class or title */
private static void waitForWindowAppear(String title) {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException exc) {
System.out.println("Thread waitForWindowAppear has been stoped!");
return;
}
if (win.isWindowVisible(title)) {
// System.out.println("Window found!");
return;
} else {
// System.out.println("Waiting for window!");
}
}
}
}
Quelqu'un at-il des idées pour résoudre ce problème?
dans quel paquet vous avez créé cette classe 'Listener'? –