所以我一直在阅读关于Android开发的教程,我遇到了一些我在Java开发过程中从未见过的东西(主要是学校工作):
Thread th = new Thread() {
public void run() {
if (iotdHandler == null) {
iotdHandler = new IotdHandler();
}
iotdHandler.processFeed(); resetDisplay(
iotdHandler.getTitle(),
iotdHandler.getDate(),
iotdHandler.getUrl(),
iotdHandler.getDescription());
dialog.dismiss();
}
};
th.start();
现在这本书说扩展线程,从某种意义上说,我有点理解它在做什么,但它不遵循通常的方式来扩展java中的普通类,如下所示:
public Class Dog extends Animal...
然后你可以继续并覆盖方法等。但我的问题是,它在引用新的Thread对象时实际上做了什么,但同时在它之后创建了一个方法,我假设在Thread类中重写某种方法?由于我不知道它叫什么,我不能真正搜索它,所以我为明显的问题道歉,如果它是一个。任何帮助将非常感激。
答案 0 :(得分:4)
修改你的Java书籍:)它被称为anonymous inner class,最初是为了促进Java GUI开发而引入的(使用AWT / Swing)。由于Android UI开发遵循许多相同的模式,因此在Android中经常使用它。
它的作用是实例化一个类(不在单独的文件中定义它等),覆盖它的一些方法(在本例中为run()
)。如果为其所有方法提供实现,也可以实现此接口。
答案 1 :(得分:0)
首先,这不是Android特有的。您可以在“普通Java”中以相同的方式扩展。当只需要一次“类扩展”时,执行类扩展的原因就是减少类。在你的例子中,写
是一样的public class MyThread extends Thread
{
@Override
public void run() {
[...]
}
};
以及后来:
MyThread thread = new MyThread();
thread.start();
所以优点是,您不需要实现类并稍后实例化它。