2014-02-16 29 views
0

這是做什麼響應查看對象的代碼被點擊(例如被點擊一個按鈕):爲什麼這個Java代碼在Eclipse中結構如此?

final OnClickListener exampleListener = new OnClickListener() 
{ 
public void onClick(View arg0) { 
//Code here that does something upon click event. 
} 
}; 

Button exampleButton = (Button)this.findViewById(R.id.firstButton); 

exampleButton.setOnClickListener(exampleListener); 

我不明白的代碼。這段代碼是否創建了一個名爲onClick的重寫方法,它屬於父類OnClickListener類?

是下面的代碼等同於上面的代碼?:

final OnClickListener exampleListener = OnClickListener.onClick() 
{ 

    public void onClick(View arg0) { 
    //Code here that does something upon click event.}; 
} 

回答

2

什麼第一代碼實際上做的是聲明和實例實現OnClickListener類。這被稱爲Anonymous Class

第二個代碼是不一樣的,不會工作,我建議你儘可能快地忘記它。

1

您應該閱讀約Anonymous classes

OnClickListener是一個接口。在代碼中,您正在定義一個類並同時創建一個新對象。

對於第二個問題,答案是否定的。它們不等同,因爲「OnClickListener」是一個接口,並且不能在接口中定義單個方法(即使該接口只有一個方法)。

更清楚的是,這與Eclipse沒有任何關係。

如果你更感興趣,你正在做的是創建一個call back object並註冊爲listener

相關問題