[英]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;
}
};
我所知道的:
但我無法連接點。 假設上面的代碼在myActivity類中,實例化了什么,這個匿名類是什么?
一點細節都會很棒。
它被稱為“匿名類”。 一些關於它的說明:
您沒有為其提供名稱,因此為您創建了一個名稱。 要查看其真實名稱,只需將其寫入控制台或讀取字節碼即可。
如果在外部類的范圍內創建,則匿名類具有對其字段的引用,就像任何內部類一樣。 通常,它與創建它的范圍相同。
如果你需要的只是一個簡單的實現,這是很常見的事情。 代碼越多,您就應該考慮將它放在另一個文件中(對於訂單,不是因為您不能)。
Runnable不是唯一常見的接口。 在Android上,您使用OnClickListener,OnTouchListener,...
由於匿名類與聲明它的位置具有相同的范圍,因此它表示它具有引用。 盡量永遠不要將匿名類保留太久(例如,在靜態引用中),因為這可能導致內存泄漏。 在Android上,它非常重要,正如此示例所示(討論drawables,但匿名類也可以引用上下文)。
匿名類的一些缺點是它們沒有構造函數,並且它不能實現多個接口。 它的使用范圍非常狹窄,但它非常受歡迎,因為它非常易於使用(和閱讀)。
谷歌有關使用“匿名內部類”的更多信息。 這篇“Java中的內部課程,神秘內容”博客文章很好地解釋了不同類型的內部類。 另請參閱“3.12。匿名類” 。
實例化的是Runnable
的匿名子類。 它被稱為匿名,因為類型本身沒有名稱。 在此子類中,您正在實現Runnable
接口中指定的run()
方法。
getStatus
的類型是Runnable
,但是getStatus
引用的對象實際上是Runnable
一個實現,它沒有明確的命名類型。
代碼正在創建實現Runnable接口的類的實例。 該類沒有名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.