2012-02-06 69 views
2

这里是一个更具体的例子:Java - 对于A类内定义的类B(静态),B.this是什么意思?

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

是什么B.this指什么?

+1

同'this'。由于该类是静态的,因此甚至不存在'A.this'。 'B b = new B();':B。这个会指向b。 – 2012-02-06 14:27:06

+0

@JoopEggen A不是静态的,答案是存在的 – 2012-02-06 14:28:14

+0

@AdelBoutros但不在B或B实例中。 – 2012-02-06 14:29:47

回答

5

It's the active instance of. If the class weren't static, you'd also have A.this`可用,指A.

因为类是静态的含例如,它不应该有必要使用B.this,简单地this绝不会含糊。

+0

如果B不是静态的,为什么“this”会含糊不清?难道它不是总是指B的例子吗? – Aneesh 2012-02-07 04:48:30

3

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

0

它可以锁定同样的事情,如果你有B中的外部类,做

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

这意味着B的当前实例