1

重複の可能性:
Java this.method() vs method()

私はいくつかのことを読んで、Android Java に関するいくつかのチュートリアルを行ってきましたが、次のコードのように、「これ」が何を意味するのかまだわかりません。

    View continueButton = this.findViewById(R.id.continue_button);
    continueButton.setOnClickListener(this);
    View newButton = this.findViewById(R.id.new_button);
    newButton.setOnClickListener(this);

また、この例では、ボタンが Button ではなく View で定義されているのはなぜですか?違いは何ですか?

ps。素晴らしいサイト!! Javaを学ぼうとしていて、ここで検索してたくさんの答えを得ました!

4

6 に答える 6

4

thisキーワードは、現在のオブジェクトへの参照です。オブジェクトのこのインスタンスなどを渡すために使用されます。

たとえば、次の 2 つの割り当ては同じです。

class Test{

    int a;

    public Test(){
        a = 5;
        this.a = 5;
    }

}

アクセスしたい隠しフィールドがある場合があります。

class Test{

    int a;

    public Test(int a){
        this.a = a;
    }

}

aここで、パラメータの値をフィールドに割り当てましたa

thisキーワードは、メソッドと同じように機能します。繰り返しますが、これら 2 つは同じです。

this.findViewById(R.id.myid);
findViewById(R.id.myid);

最後に、MyObject パラメーターを取るメソッドを持つクラス MyObject があるとします。

class MyObject{

    public static void myMethod(MyObject object){
        //Do something
    }

    public MyObject(){
        myMethod(this);
    }

}

この最後の例では、現在のオブジェクトの参照を静的メソッドに渡しました。

また、この例では、ボタンが Button ではなく View で定義されているのはなぜですか?違いは何ですか?

Android SDK では、 aButtonは のサブクラスですViewButtonを としてリクエストし、Viewを にキャストViewできButtonます。

Button newButton = (Button) this.findViewById(R.id.new_button);
于 2012-06-06T19:53:18.023 に答える
1

this操作対象のオブジェクトのインスタンスを参照しています。

上記の場合、this.findViewById(R.id.continue_button)これは親クラスのメソッドを参照しています (具体的には、Activity.findViewById()orView.findViewByid()の独自のサブクラスを記述していると仮定すると、Activityor View!)。

于 2012-06-06T19:53:37.757 に答える
0

「this」は現在のオブジェクト インスタンスです。

class Blaa
{
   int bar=0;
   public Blaa()
   {}
   public void mogrify(int bar,Blaa that)
   {
       bar=1; //changes the local variable bar
       this.bar=1; //changes the member variable bar. 
       that.bar=1; //changes "that"'s member variable bar. 
   }

}
于 2012-06-06T19:53:10.847 に答える
0

thisクラスの現在のインスタンスを参照します

于 2012-06-06T19:53:22.897 に答える
0

thisJava では、現在のオブジェクト インスタンスへの参照です。したがって、クラス のメソッドを作成している場合MyClassthisは の現在のインスタンスですMyClass

あなたの場合、書くことthis.findViewById(...)は本当に必要ではなく、悪いスタイルと見なされる可能性があることに注意してください.

于 2012-06-06T19:55:03.143 に答える
0

Java、c# などのオブジェクト指向言語の「this」は、メソッドを呼び出しているオブジェクト、またはアクセスしているデータのオブジェクトへの参照です。

このリンクが「これ」を理解するのに役立つかどうかを確認してください 詳細 -

http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

于 2012-06-06T20:14:56.897 に答える