【问题标题】:Different ways to extend classes through Android development?通过 Android 开发扩展类的不同方法?
【发布时间】:2012-05-14 07:45:45
【问题描述】:

所以我一直在阅读关于 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 android extends


【解决方案1】:

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

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

【讨论】:

  • 啊,谢谢!我从来没有使用过它,所以我不知道如何搜索使用内部类的方法。非常感谢。
【解决方案2】:

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

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

以后:

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

所以好处是,您不需要实现一个类并在以后实例化它。

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多