java在我的代码中,“this”关键字指的是什么?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import javax.swing.*;
import java.awt.event.*;
public class CursorClass implements ActionListener{
JButton btn;
JFrame frame;
public static void main(String[] args) {
CursorClass cc = new CursorClass();
cc.launchButton();
}
public void launchButton(){
frame = new JFrame("Main Window");
frame.setSize(400, 400);
btn = new JButton("Close Main Window");
btn.setSize(100,100);
btn.addActionListener(this); // <--------
JPanel pnl = new JPanel();
pnl.add(btn);
frame.add(pnl);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event){
System.out.print("Exiting..");
System.exit(0);
}
}
正如您在launchButton
方法中看到的那样。。btn.addActionListener(this)
函数
什么是this
?指的是什么
它是指整个CursorClass
吗?
我只是有点困惑。我无法理解我传递给button对象的内容。我知道我添加了ActionListener。。现在按钮(即事件源)将在单击按钮时响应按钮,但在该方法中添加this
。。我看不出this
是什么。。我知道最常见的答案是this
指的是当前对象,等等。。
但我需要一些更具体的。。我写这篇文章的班级被认为是^{
# 1 楼答案
类的对象被认为是
this
假设你有两个CursorClass对象,A&;B
因此,对象A中的}将引用对象B
this
将指对象A&^对象B中的{# 2 楼答案
最简单的答案是,它指的是这个类的对象,或者是一个扩展这个类的类,它调用了方法(
launchButton()
)# 3 楼答案
this
正如在代码中执行的一样,它正好指的是在那里创建的实例cc
:实例化之后,调用:
所以,在你的例子中,
this
是cc
addActionListener
的方法签名是public void addActionListener(ActionListener l)
,因此必须传递ActionListener
的实例,正如您在类定义中看到的:CursorClass是一个有效的类,因为它实现了ActionListener
这里可以看到的是observer pattern,其中通知方法是实现的方法
public void actionPerformed(ActionEvent e){...}
# 4 楼答案
是的,java和其他面向对象语言中的
this
指的是当前的类在你的例子中,这个==
CursorClass
# 5 楼答案
你的
CursorClass
实现了ActionListener
this
指的是CursorClass
的当前实例。本质上,代码添加了本身(“this”对象)作为动作侦听器它引用
CursorClass
实例的原因是它是从launchButton
调用的,这是CursorClass
中的一个方法