“this”关键字在Java的“.addActionListener(this)”中引用了什么

时间:2013-10-13 02:33:51

标签: java android event-handling listener this

我是Java / Android的新手。我不理解addActionListener(this)中的“this”。 我读了很多书和论坛,但我仍然混淆了以下内容:

有人解释说: “这个”是对当前对象的引用“

将事件处理程序类的实例注册为一个或多个组件上的侦听器。 someComponent.addActionListener(instanceofMyClass);

好的,我明白,这是一个班级的对象。

然而,有人解释说: “this”表示一个已实现且已实例化的ActionListener,它恰好是您的类。

所以“this”可以是类的对象,也可以是“类”。 这是我不明白的。

有人会向我解释清楚。谢谢!

4 个答案:

答案 0 :(得分:2)

This总是引用当前对象,而不是类。有时候,当他们意味着对象时,人们会错误地说课。这就是全部。

答案 1 :(得分:2)

“this”引用当前对象,因为Java使用方法来更改对象。因此,当您在Activity中调用“this”时,您正在为您的方法添加一些内容。

您的代码“someComponent.addActionListener(instanceofMyClass);”正在做同样的事情。您正在使用对象“someComponent”并使用方法“addActionListener”。然后ActionListener会想知道它将获取监听器代码的位置,并且您声明要从“instanceofMyClass”调用它,它可以与“this”交换

您可以在此处找到代码的另一种解释:What is the meaning of "this" in Java?

答案 2 :(得分:1)

在您的情况下,“this”既是“对当前对象的引用”又是“实现ActionListener接口的实现”。这意味着封闭类(“this”支持)应该实现接口ActionListener。因此,当单击someComponent(或其他操作)时,将调用封闭类来处理事件。

您可以参考下面的代码来理解:“this”代表实现ActionListener的YourClass实例

public YourClass implements ActionListener
{
  private someComponent;
  public YourClass ()
   {
   someComponent = new Component();
   someComponent.addActionListener(this);
   }

  public void actionPerformed()
  {
    //add code to process the event
  }
}

答案 3 :(得分:1)

这是发生了什么。在下面的示例中,SomeClass实现了ActionListener接口,该接口只有一个需要实现的方法(actionPerformed,它将ActionEvent对象作为参数)。但是,为了实现此方法,您需要一个对象。“this”指的是SomeClass的对象。

    public class SomeClass implements ActionListener{

    SomeClass(){
    Button aButton  = new Button("Click Me");
    aButton.addActionListener(this);
    }

     public static void main(String[] args) {
       SomeClass object = new SomeClass();
     }

    public void actionPerformed(ActionEvent e) {
     //do Something when user clicks the button
    }
}