是否可以有一个方法参数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(使用前将#替换为@)