传入'This'关键字

时间:2012-11-01 15:40:27

标签: java this

public class CommandForm extends Form implements CommandListener {

    Display d;

    public CommandForm(String msg) {

        super(msg);
        this.addCommand(exit);

    }


    private void showMessage(String title, String text) {
        Alert a = new Alert(title, text, null, AlertType.INFO);
        d.setCurrent(a, this);

    }

    public void prepare_view(Display d){
        this.setCommandListener(this);
        this.d = d;
    }

    public void show_view(){
        d.setCurrent(this);
    }
}

我不确切知道'this'关键字在此示例中的含义。我的讲师说这是当前的对象,当我进一步询问时,他说这是CommandForm。那是对的吗?当你将'this'传入括号时,例如setCommandListener(this)你实际上是在传递CommandForm吗?我知道如何使用'this'的唯一方法就是这样,this.d = d。所以这对我来说有点新鲜。

3 个答案:

答案 0 :(得分:2)

你的讲师确实是对的。它是当前对象,this只是一种引用当前范围内对象的方法。

您可以使用关键字将引用传递给其他对象,例如object.doSomethingWith(this),和/或解决成员和变量之间的歧义(例如this.x = x - 这里有两个不同的x

查看Java Language Specification section on 'this'

答案 1 :(得分:2)

他是对的。如果您调用setCommandListener(this),则将对当前对象的引用传递给方法。当您执行this.d = d时,您将变量d设置为类的一部分(即this)到输入值(在括号中)。

答案 2 :(得分:1)

是的,this关键字是对CommandForm类的特定实例的引用。