Como implementar o método de retorno de chamada em java usando reflexão de java?

Existem muitas maneiras de implementar o método de retorno de chamada em Java, como –

Alguns usam o padrão do observador para resolver o problema de retorno de chamada, alguns usam o delegado .net como o método anônimo em java. Aqui, encontrei uma maneira de implementar o retorno de chamada usando reflexão java. Acho que é uma maneira muito boa.

[code]
package org.codexplo.util.callback;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class CallBack {

public static Object invoke(Object scope, String methodName,
Object... parameters) {
Object object = null;

Method method;
try {
method
= scope.getClass().getMethod(methodName,
getParemeterClasses
(parameters));
object = method.invoke(scope, parameters);
} catch (NoSuchMethodException | SecurityException
| InvocationTargetException | IllegalAccessException e) {
e
.printStackTrace();
}
return object;
}
@SuppressWarnings("rawtypes")
private static Class[] getParemeterClasses(Object... parameters) {
Class[] classes = new Class[parameters.length];
for (int i = 0; i < classes.length; i++) {
classes
[i] = parameters[i].getClass();
}
return classes;
}
}
[/code]

Casos de teste

[código]

package org.codexplo.util.callback;

import org.junit.Test;

public class TestCallback {
@Test
public void test() {
TestClass testClass = new TestClass();
CallBack.invoke(testClass, "sayHello");
CallBack.invoke(testClass, "sayHello", "Polish","Witaj świecie ");
CallBack.invoke(testClass, "sayHello", "Arabic","مرحبا العالم ");
CallBack.invoke(testClass, "sayHello", "French","Bonjour tout le monde ");
CallBack.invoke(testClass, "sayHello", "Chinese","你好世界 ");
}

class TestClass {
public void sayHello() {
System.out.println("English :"+" Hello world!");
}

public void sayHello(String language, String words) {
System.out.println(language + " : " + words);
}
}
}

[/código]

bom tiro!

se gostar da minha postagem, pode visitar meu blog:

https://codexplo.wordpress.com/
http://blog.codexplo.org/