有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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指的是当前对象,等等。。 但我需要一些更具体的。。我写这篇文章的班级被认为是^{


共 (5) 个答案

  1. # 1 楼答案

    你的CursorClass实现了ActionListenerthis指的是CursorClass的当前实例。本质上,代码添加了本身(“this”对象)作为动作侦听器

    它引用CursorClass实例的原因是它是从launchButton调用的,这是CursorClass中的一个方法

  2. # 2 楼答案

    是的,java和其他面向对象语言中的this指的是当前的类

    在你的例子中,这个==CursorClass

  3. # 3 楼答案

    this正如在代码中执行的一样,它正好指的是在那里创建的实例cc

    CursorClass cc = new CursorClass();
    

    实例化之后,调用:

    cc.launchButton();
    

    所以,在你的例子中,thiscc

    addActionListener的方法签名是public void addActionListener(ActionListener l),因此必须传递ActionListener的实例,正如您在类定义中看到的:

    public class CursorClass implements ActionListener{
    

    CursorClass是一个有效的类,因为它实现了ActionListener

    这里可以看到的是observer pattern,其中通知方法是实现的方法public void actionPerformed(ActionEvent e){...}

  4. # 4 楼答案

    最简单的答案是,它指的是这个类的对象,或者是一个扩展这个类的类,它调用了方法(launchButton()

  5. # 5 楼答案

    类的对象被认为是this

    假设你有两个CursorClass对象,A&;B

    因此,对象A中的this将指对象A&^对象B中的{}将引用对象B