Java - 对于A类中定义的B类(作为静态),这是什么意思?

时间:2012-02-06 14:24:52

标签: java

这是一个更具体的例子:

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

B.this指的是什么?

3 个答案:

答案 0 :(得分:5)

It's the active instance of B . If the class weren't static, you'd also have A.this`可用,引用包含A的实例。

因为该类是静态的,所以永远不必使用B.this,因为简单地this永远不会有歧义。

答案 1 :(得分:3)

在这里,B.this是一种写this的尴尬方式。

答案 2 :(得分:0)

它锁定了完全相同的东西,就好像你把B作为一个外部类并且做了

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

表示B的当前实例。