如何定义一个类并将其实例创建为一个构造

时间:2013-07-05 05:22:16

标签: java

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

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

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

4 个答案:

答案 0 :(得分:12)

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

这会创建一个anonymous class来实现Runnable接口,并将抽象run()方法重写为无操作。

匿名类的一般形式是

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

,其中

  1. Name是要扩展/实现的接口或类的名称,
  2. superCtorParam 0 ... n Name构造函数的参数
  3. member 0 ... n 是字段,方法,初始值设定项,匿名类的内部类,就像在任何其他类声明中一样

答案 1 :(得分:2)

怎么样......

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

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

答案 2 :(得分:0)

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

yourMethod(() -> System.out.println("RUN!"));

答案 3 :(得分:0)

使用匿名类

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