4

我想减少以下代码行。不必声明该类,然后创建它的实例来运行 run 方法。应该可以编写代码,以便您可以定义类并将其实例创建为一个构造。我仍然需要 runOnUiThread 来实际运行它,但我正在寻找一种简洁的方式来结合类定义和实例化。我在某处见过它,但不记得它是如何完成的:

class OnRunnableCompleted implements Runnable
{
  @Override
  public void run()
  {
  }
}

OnRunnableCompleted onRunnableCompleted = new OnRunnableCompleted();
runOnUiThread(onRunnableCompleted);
4

4 回答 4

12
runOnUiThread(new Runnable() { public void run() {} });

这将创建一个实现接口的匿名类Runnable并将抽象run()方法覆盖为无操作。

匿名类的一般形式是

new Name(superCtorParam0, superCtorParam1) {
  member0;
  member1;
}

在哪里

  1. Name是要扩展/实现的接口或类的名称,
  2. superCtorParam0...nName的构造函数的参数
  3. member0...n是匿名类的字段、方法、初始化程序、内部类,就像在任何其他类声明中一样
于 2013-07-05T05:23:35.807 回答
2

怎么样...

Runnable calculatePI = new Runnable(){
    public void run(){/*calculate pi*/}
}
//Any time you need to calculate pi
runOnUiThread(calculatePI);

这减少了代码并防止了匿名类的重复创建。在我的 android 开发中,我经常使用这个解决方案。效果很好。

于 2013-07-05T05:25:21.840 回答
0

在 JDK 8 中,您可以执行以下操作:

yourMethod(() -> System.out.println("RUN!"));
于 2013-07-05T05:26:40.680 回答
0

使用匿名类作为

runOnUiThread(new Runnable() { public void run() {} });
于 2013-07-05T05:34:03.807 回答