可通过方法参数运行

2024-01-10

是否可以有一个方法参数Runnable像这个:

public Runnable createRunnable(Method a_void_method) {
    Runnable runnable = new Runnable() {
        public void run() {
            //a_void_method
        }
    };
    return runnable;
}

或者有什么办法可以这样做吗?


The Runnable您正在创建的类与任何其他匿名嵌套类没有什么不同。因此,您可以将任何“有效最终”对象引用传递给它。在你的情况下Method参考一下就好了。

然而一个Method需要一个实例或class进行操作,否则该方法不知道要调用哪个多态方法,也不知道要传递哪些数据。

如果您的 Java 版本是 8 之前的版本,您需要将对象实例传递给您的createRunnable:

public Runnable createRunnable(Object instance, Method method) {
   return new Runnable() {
       try {
           method.invoke(instance);
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
                 // handle exception
                 throw new RuntimeException(e);
            }
   };
)

在 Java-8 及更高版本中,您可以使用 lambda 方法引用,从而无需创建函数:

Runnable r = () -> { 
            try {
                method.invoke(instance);
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
                 // handle exception
                 throw new RuntimeException(e);
            }
        };

或者,如果您已经知道方法和实例,您也可以使用

Runnable r = object::method;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可通过方法参数运行 的相关文章

随机推荐