1

所以我一直在阅读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 类中的某种方法?由于我不知道它叫什么,因此我无法真正搜索它,因此对于明显的问题,如果它是一个,我深表歉意。任何帮助将非常感激。

4

2 回答 2

4

修改您的 Java 书籍 :) 它被称为匿名内部类,最初是为了促进 Java GUI 开发(使用 AWT/Swing)而引入的。由于 Android UI 开发遵循许多相同的模式,因此它在 Android 中经常使用。

它所做的是在适当的位置实例化一个类(而不在单独的文件中定义它等),覆盖它的一些方法(在这种情况下run())。如果您为其所有方法提供实现,您还可以实现一个接口。

于 2012-05-14T07:51:57.743 回答
0

首先,这与 Android 无关。您可以在“普通 Java”中以相同的方式进行扩展。像这样进行类扩展的原因是为了减少类,而这种“类扩展”只需要一次。在你的例子中,写起来是一样的

public class MyThread extends Thread
{
   @Override
   public void run() {
   [...]
   } 
};

后来:

MyThread thread = new MyThread();
thread.start();

So the advantage is, that you don't need to implement a class and instantiate it later on.

于 2012-05-14T07:52:58.867 回答