所以我一直在阅读一个关于 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 类中的某种方法时,它实际上做了什么?由于我不知道它叫什么,所以我无法真正搜索它,所以如果它是一个明显的问题,我深表歉意。任何帮助将不胜感激。
:)修改你的 Java 书籍它被称为匿名内部类,最初是为了促进Java GUI开发(使用AWT/Swing)而引入的。由于Android UI开发遵循许多相同的模式,因此在Android中经常使用。
它所做的是就地实例化一个类(不在单独的文件中定义它等),覆盖它的一些方法(int 本例run()
)。如果您为其所有方法提供实现,则还可以通过此接口来实现此接口。
首先,这不是特定于Android的。您可以在"普通Java"中以相同的方式扩展。像这样进行类扩展的原因是为了减少类,当这个"类扩展"只需要一次时。在您的示例中,编写内容相同
public class MyThread extends Thread
{
@Override
public void run() {
[...]
}
};
后来:
MyThread thread = new MyThread();
thread.start();
所以优点是,你不需要实现一个类并在以后实例化它。