我正在使用此代码来显示消息:
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中使用。
问候!
答案 0 :(得分:2)
这是您在Java中可以做的最好的事情。您只能传递对象(和标量),因此您必须创建一个实现Runnable的类,或者执行您现在正在执行的操作,即创建实现Runnable的匿名对象实例。
答案 1 :(得分:0)
Java不是JavaScript。
你的命题是不可能的,因为你不能轻易地传递方法和功能。顶部的代码可以简化为(适当更改您的Common类):
Common.run(new Runnable() {
public void run() {
// your code
}
}
答案 2 :(得分:0)
Java没有“独立”的闭包;通过匿名实施是最接近的传真。
使其“更短”的唯一真正方法是创建一个具体的实现并传递它 - 但这只是在呼叫站点更短。