我是Java / Android的新手。我不理解addActionListener(this)中的“this”。 我读了很多书和论坛,但我仍然混淆了以下内容:
有人解释说: “这个”是对当前对象的引用“
将事件处理程序类的实例注册为一个或多个组件上的侦听器。 someComponent.addActionListener(instanceofMyClass);
好的,我明白,这是一个班级的对象。
然而,有人解释说: “this”表示一个已实现且已实例化的ActionListener,它恰好是您的类。
所以“this”可以是类的对象,也可以是“类”。 这是我不明白的。
有人会向我解释清楚。谢谢!
答案 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
}
}