java - 是否可以获取对 Java 方法的引用以便稍后调用它?

标签 java methods

是否可以获取对象方法的引用?例如,我想要一个调用其他方法作为回调的方法。像这样的东西:

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

  }
}

这可能吗?

编辑:我的意思是一个对象的方法。我认为这是不可能的?

最佳答案

是的,这是可能的。

您只需获取方法并调用它。

下面是一些示例代码:

$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
$

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

关于java - 是否可以获取对 Java 方法的引用以便稍后调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2016324/

相关文章:

java - 如何在java中的面板上设置背景图像,使我的按钮清晰可见?

java - 如何给java.net.http.HttpClient GET请求添加参数?

java - 构造期间未知泛型的安全方法返回类型

java - 尝试打印 Postfix 计算器的结果

C++ STL 容器

android - 方法 XYZ 的代码超出了 65535 字节限制

java - 如何在 IntelliJ IDEA 中从 -source 1.6 更改为 -source 7

java - Spring Security 自定义登录的工作原理

java - 运行BIRT的Linux上缺少中文字符报告

JavaScript,使用 indexOf() 和 lastIndexOf() 方法查找数组实例