Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将代码作为参数传递_Java_Android - Fatal编程技术网

Java 将代码作为参数传递

Java 将代码作为参数传递,java,android,Java,Android,我正在使用此代码显示消息: Common.getHandler().post(new Runnable(){ public void run(){ Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show(); } }); Common是我的一个类,getHandler()将返回在活动中创建的处理程序。这样我就可以在户外活动中举杯庆祝了。 这是一个很好的方法,它工作得很好,但我

我正在使用此代码显示消息:

Common.getHandler().post(new Runnable(){
    public void run(){
        Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show();
    }
});
Common是我的一个类,getHandler()将返回在活动中创建的处理程序。这样我就可以在户外活动中举杯庆祝了。 这是一个很好的方法,它工作得很好,但我想知道是否有其他方法可以使代码更简洁/更短

比如:

Common.run({
    Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show();
});
run()方法应该将作为参数传递的代码封装在Runnable中

这叫做闭包,在Javascript中是可能的


问候

这是您在Java中所能做的最好的事情。您只能传递对象(和标量),因此您必须创建一个实现Runnable的类,或者执行您现在正在做的操作,即创建一个实现Runnable的匿名对象实例。

Java不是JavaScript

您的提议是不可能的,因为您无法轻松地传递方法和函数。顶部的代码可以简化为(对公共类进行适当更改):

Java没有“独立”闭包;传递匿名实现是最接近的传真


使其“更短”的唯一真正方法是创建一个具体的实现并传递它——但在调用站点上这只会更短。

当然,我想引入一些自定义接口,但最终没有。谢谢你指出。
Common.run(new Runnable() {
    public void run() {
        // your code
    }
}