为什么这个Java代码在Eclipse中的结构如此?

时间:2014-02-16 14:39:02

标签: java android eclipse button

这是响应单击View对象(例如单击按钮)的代码:

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 个答案:

答案 0 :(得分:2)

第一个代码实际上做的是声明并实例化一个实现OnClickListener的类。这称为Anonymous Class

第二个代码不一样,不起作用,我建议你尽快忘记它。

答案 1 :(得分:1)

您应该阅读Anonymous classes

OnClickListener是一个界面。在代码中,您要定义一个类并同时创建一个新对象。

对于你的第二个问题,答案是否定的。它们不等同,因为'OnClickListener'是一个接口,您无法在接口中定义单个方法(即使接口只有一个方法)。

更清楚的是,这与Eclipse没有任何关系。

如果您对此感兴趣,您正在做的是创建call back object并将其注册为listener