【问题标题】:Why is this Java code structured like this in Eclipse?为什么这个 Java 代码在 Eclipse 中的结构是这样的?
【发布时间】:2014-02-16 14:39:01
【问题描述】:

这是响应单击 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.};
}

【问题讨论】:

    标签: java android eclipse button


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你应该阅读Anonymous classes

      OnClickListener 是一个接口。在代码中,您同时定义了一个类并创建了一个新对象。

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

      更清楚地说,这与 Eclipse 没有任何关系。

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

      【讨论】:

        猜你喜欢
        • 2015-03-12
        • 2021-07-25
        • 1970-01-01
        • 2013-01-05
        • 2015-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多