我正在浏览处理程序,其中的post方法接受Runnable类型的参数。我遇到了以下代码段
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
timeView.clearComposingText();
Integer hours = seconds/3600;
Integer minutes = (seconds % 3600)/60;
Integer secs = seconds % 60;
String time = String.format("%d:%02d:%02d",hours,minutes,secs);
timeView.setText(time);
if(running)
{
seconds++;
}
handler.postDelayed(this,1000);
}
});
既然 Runnable 是 Java 中的接口,我们如何才能直接创建Runnable的新实例?
答案 0 :(得分:1)
匿名类可以实现接口,并且只有在没有"实现"的情况下,您才能看到实现接口的类。关键字。
完整的示例可能如下所示:
public class MyClass {
public interface A {
void foo();
}
public interface B {
void bar();
}
public interface C extends A, B {
void baz();
}
public void doIt(C c) {
c.foo();
c.bar();
c.baz();
}
public static void main(String[] args) {
MyClass mc = new MyClass();
mc.doIt(new C() {
@Override
public void foo() {
System.out.println("foo()");
}
@Override
public void bar() {
System.out.println("bar()");
}
@Override
public void baz() {
System.out.println("baz()");
}
});
}
}
此示例的输出为:
foo()
bar()
baz()