是否有可能获得对Java方法的引用以便稍后调用它?

Geo*_*Geo 7 java methods

是否有可能获得对象方法的引用?例如,我想要一个调用其他方法作为回调的方法.就像是:

public class Whatever
{
  public void myMethod(Method m,Object args[])
  {

  }
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

编辑:我的意思是对象的方法.我认为这不可能吗?

Osc*_*Ryz 7

对的,这是可能的.

你只需要获取方法并调用它.

这是一些示例代码:

$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
$
Run Code Online (Sandbox Code Playgroud)

现在问题是,你想做什么?也许是更好的方法.但至于你的问题,答案是肯定的.