0

この質問は明白な答えで少し些細なことに見えるかもしれませんが、周りにも、StackOverflowにも、Googleにも説明が見つかりませんでした。

次のコード:

Object o = this;

オブジェクトを操作する必要があるクラス メソッド (静的メソッドではなく、ジェネリック クラスに属するインスタンス メソッド) 内で使用できますか (たとえば、for ループを使用します)。

繰り返しますが、配列があり、MyObject で使用できるMyObject[] oArrと仮定して、次のコードを検討してください。otherMethod

MyObject obj = this;
for(MyObject f : oArr){
    obj = obj.otherMethod(f);
}

ここで起こっていることは次のとおりです。

  • objこれは、メソッドを実行している現在のオブジェクトへの参照に 割り当てるために使用されます
  • 参照が割り当てられると、各反復中にオブジェクト o の参照を最終的に更新できます。

正直なところ、ここで私を混乱させているのは、次のコード行です。

MyObject obj = this;

this単にオブジェクトを参照するために使用される、変数/メソッド名なしで見つけたのはこれが初めてです。

ここで何が起こっているのかわかりましたか?私は何か不足していますか?の同様の使用法に関する追加情報を見つけることができるリンクはありthisますか?
ありがとう

4

3 に答える 3

3

this変数への代入について「間違っている」ことは何もありません。

あなたの場合、そうすることで、反復コードの初期条件が設定されます。

このような合理的な使用法は、ルート ノードが次のリンク リストにある場合がありますthis

// find end node, to add another node perhaps
Node node = this;
while (node.next != null)
    node = node.next;
于 2013-07-14T10:59:50.290 に答える
0
MyObject obj = this;

これはコンストラクターを指すためにも使用できるため、ここでthisは、この行がコンテキストにあるクラスを参照するために使用されますが、参照されるクラスは同じタイプである必要があります/参照するために継承関係がある必要があります。明確にするためにあなたはこの行を書きますAClass

class AClass {
  MyObject obj= this; // in here you refer the AClass by calling this,
}
于 2013-07-14T11:01:30.703 に答える