1
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。所以这对我来说有点新鲜。

4

3 回答 3

2

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

于 2012-11-01T15:45:47.030 回答
2

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

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

查看关于“this”的 Java 语言规范部分

于 2012-11-01T15:43:10.570 回答
1

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

于 2012-11-01T15:42:46.683 回答