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」キーワードが何を意味するのか正確にはわかりません。私の講師は、それが現在のオブジェクトだと言っています。あれは正しいですか?setCommandListener(this) のように「this」を括弧に入れて渡す場合、実際に CommandForm を渡しているのでしょうか。「this」の使い方を知っている唯一の方法は、this.d = d のようにすることです。だから、これは私にとってちょっと新しいです。

4

3 に答える 3

2

あなたの講師は確かに正しいです。これは現在のオブジェクトであり、this現在スコープ内にあるオブジェクトを参照する手段にすぎません。

キーワードを使用して、他のオブジェクトへの参照を渡しobject.doSomethingWith(this)たり、メンバと変数の間のあいまいさを解決したりします (たとえば、ここthis.x = xには 2 つの異なる がありxます)。

'this' に関する Java 言語仕様セクションを確認してください。

于 2012-11-01T15:43:10.570 に答える
2

彼は正しい。呼び出すsetCommandListener(this)と、現在のオブジェクトへの参照がメソッドに渡されます。その場合、クラスの一部でthis.d = dある変数d(つまりthis) を着信値 (括弧内) に設定します。

于 2012-11-01T15:45:47.030 に答える
1

はい、thisキーワードはCommandFormクラスの特定のインスタンスへの参照です。

于 2012-11-01T15:42:46.683 に答える