Java - クラスAの内部で定義された(静的な)クラスBについて、これはどういう意味ですか?

より具体的な例を次に示します。

public class A {
    public static class B {
             public void f() {
                 synchronized (B.this) {
                    //do something
                 }
             }
     }
}

B.これは何を指していますか?

2
this と同じです。クラスが静的であるため、 A.this は存在しません。 B b =新しいB(); :B.これはbを指します。
追加された 著者 Joop Eggen,
@AdelBoutrosしかし、BやBインスタンスの内部にはありません。
追加された 著者 Joop Eggen,
@JoopEggen Aは静的ではありません.Aは存在します。
追加された 著者 Adel Boutros,
@AdelBoutrosしかし、B内からではなく、これは彼がおそらく意味していることです...
追加された 著者 quaylar,

3 答え

It's the active instance ofB. If the class weren't static, you'd also haveA.this` available, to refer to the containing instance of A.

クラスは静的なので、単に this が曖昧ではないため、 B. this を使用する必要はありません。

5
追加された
Bが静的でない場合、なぜ「これ」があいまいになるのでしょうか?それは常にBのインスタンスを参照していませんか?
追加された 著者 Aneesh,

ここでは、 B.これ this を記述するのは難しい方法です。

3
追加された

それはあなたがBを外のクラスとして持っていたのとまったく同じものをロックします

public class B {
  public void f() {
    synchronized (this) {
     //do something
    }
  }

これはBの現在のインスタンスを意味します。

0
追加された