簡體   English   中英

Android和Java:使用runnable

[英]Android and Java: use of runnable

我已經讀過在Java接口中無法實例化( 在文檔中, 接口 )。 根據定義,Runnable是一個應該由某個類實現的接口。 但是在我的一個Android應用程序的下面一段代碼中,我看到一個空構造函數 - Runnable()...(我不確定它是否是構造函數)已被使用,並且已經創建了一個實例 - getStatus。

final Runnable getStatus = new Runnable()
{
    public void run()
    {
        TextView uat = (TextView) findViewById(R.id.useAndThrow);
        uat.setText(MyThread.getStatus());
        return;
    }
};

我所知道的:

  1. 這可能是匿名類的一個例子。
  2. 該實例實際上不是接口。

但我無法連接點。 假設上面的代碼在myActivity類中,實例化了什么,這個匿名類是什么?

一點細節都會很棒。

它被稱為“匿名類”。 一些關於它的說明:

  1. 您沒有為其提供名稱,因此為您創建了一個名稱。 要查看其真實名稱,只需將其寫入控制台或讀取字節碼即可。

  2. 如果在外部類的范圍內創建,則匿名類具有對其字段的引用,就像任何內部類一樣。 通常,它與創建它的范圍相同。

  3. 如果你需要的只是一個簡單的實現,這是很常見的事情。 代碼越多,您就應該考慮將它放在另一個文件中(對於訂單,不是因為您不能)。

  4. Runnable不是唯一常見的接口。 在Android上,您使用OnClickListener,OnTouchListener,...

  5. 由於匿名類與聲明它的位置具有相同的范圍,因此它表示它具有引用。 盡量永遠不要將匿名類保留太久(例如,在靜態引用中),因為這可能導致內存泄漏。 在Android上,它非常重要,正如此示例所示(討論drawables,但匿名類也可以引用上下文)。

  6. 匿名類的一些缺點是它們沒有構造函數,並且它不能實現多個接口。 它的使用范圍非常狹窄,但它非常受歡迎,因為它非常易於使用(和閱讀)。

谷歌有關使用“匿名內部類”的更多信息。 這篇“Java中的內部課程,神秘內容”博客文章很好地解釋了不同類型的內部類。 另請參閱“3.12。匿名類”

實例化的是Runnable的匿名子類。 它被稱為匿名,因為類型本身沒有名稱。 在此子類中,您正在實現Runnable接口中指定的run()方法。

getStatus的類型是Runnable ,但是getStatus引用的對象實際上是Runnable一個實現,它沒有明確的命名類型。

代碼正在創建實現Runnable接口的類的實例。 該類沒有名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM