Sí, es posible.
Solo tiene que obtener el método e invocarlo.
He aquí algunos ejemplos de código:
$cat InvokeMethod.java
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
public class InvokeMethod {
public static void invokeMethod(Method m , Object o , Object ... args)
throws IllegalAccessException,
InvocationTargetException {
m.invoke(o, args);
}
public static void main(String [] args)
throws NoSuchMethodException,
IllegalAccessException,
InvocationTargetException {
SomeObject object = new SomeObject();
Method method = object.getClass().getDeclaredMethod("someMethod", String.class);
invokeMethod(method, object, "World");
}
}
class SomeObject {
public void someMethod(String name){
System.out.println(" Hello " + name);
}
}
$javac InvokeMethod.java
$java InvokeMethod
Hello World
$
Ahora la pregunta es, ¿qué estás tratando de hacer? quizás son mejores formas. Pero en cuanto a su pregunta, la respuesta es SÍ.
¿Quiere decir "métodos de una clase", no "métodos de un objeto", ¿verdad? – skaffman
@skaffman: métodos de clase de un objeto. ¿Qué hay sobre eso? Esta es una distinción importante: si tiene una instancia de clase anónima, no puede hacer referencia a la clase por su nombre, solo mediante la llamada 'getClass' en la instancia. Al usar la reflexión, puede acceder a otros métodos a los que normalmente no puede acceder a través de la interfaz base/clase/enum. :-P –