MyActivity.this
コードが内部クラスで実行されたときに、「外部」の MyActivity クラスのインスタンスを参照します。――そうですか。もしそうなら、なぜhost
変数が必要なのですか?
更新:内部クラスMyActivity.this
内から経由してアクセスするすべてのものに、特定のセットアップで経由してアクセスできるという事実を見落としている可能性があることに気付きました。host
更新:の意味を間違って理解しているようですthis
。本来、これはこのオブジェクト、つまりコードが実行されるクラスを表します。
追加の表記法によりClass.this
、Java を使用すると、コードの外部クラスのインスタンスにアクセスできますが、内部クラスからのみアクセスできます。
次の例では、Class.this
動作します。
class A {
int a;
class B {
void process_a_in_A() {
A.this.a++;
}
}
// however, this does NOT work b/c
// static inner classes do not have references t oouter classes
static class C {
void process_a_in_A() {
// error -- class A.C is detached from its outer class A
A.this.a++;
}
}
}
また、次の例でClass.this
は機能しません。その理由は単純に、クラス A のインスタンスが存在するかどうか、および参照したいクラス A の多くのインスタンスのどれをシステムが認識できないかということです。
class A {
int a;
}
class B {
void process_a_in_A() {
// A here is a class name, not an object reference;
// so A.this is meaningless in this context
A.this.a++;
}
}
繰り返しますが、具体的に回答するために必要な情報を提供せずに質問したため、一般的な回答しかできず、内部クラスとClass.this
表記について間違った認識を持っているようです。