将代码作为参数传递

时间:2011-12-28 15:44:08

标签: java android

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

Common.getHandler().post(new Runnable(){
    public void run(){
        Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show();
    }
});

Common是我的一个类,getHandler()将返回在活动中创建的处理程序。这样我就可以从外面的活动中给Toast打电话了。 这是一个很好的方法,它工作正常,但我想知道是否有另一种方法可以使代码更清洁/更短。

类似的东西:

Common.run({
    Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show();
});

run()方法应该封装在Runnable中作为参数传递的代码。

AFAIK这称为闭包,它可以在Javascript中使用。

问候!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

Java不是JavaScript。

你的命题是不可能的,因为你不能轻易地传递方法和功能。顶部的代码可以简化为(适当更改您的Common类):

Common.run(new Runnable() {
    public void run() {
        // your code
    }
}

答案 2 :(得分:0)

Java没有“独立”的闭包;通过匿名实施是最接近的传真。

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