java中.this和.class的含义

时间:2010-08-08 10:58:21

标签: java

假设我们有一个班级名称Home。 Home.this Home.class 之间有什么区别?他们指的是什么?

2 个答案:

答案 0 :(得分:58)

<强> Home.this

Home.this指的是Home类的当前实例。

此表达式的正式术语似乎是Qualified this,如Java语言规范的第15.8.4节所述。

在一个简单的课程中,说Home.thisthis是等效的。此表达式仅用于存在内部类的情况,并且需要引用封闭类。

例如:

class Hello {
  class World {
    public void doSomething() {
      Hello.this.doAnotherThing();
      // Here, "this" alone would refer to the instance of
      // the World class, so one needs to specify that the
      // instance of the Hello class is what is being
      // referred to.
    }
  }

  public void doAnotherThing() {
  }
}

<强> Home.class

Home.class会将Home类的表示形式返回为Class个对象。

此表达式的正式术语是class literal,如Java语言规范的第15.8.2节所述。

在大多数情况下,当使用reflection时使用此表达式,并且需要一种方法来引用类本身而不是类的实例。

答案 1 :(得分:4)

Home.class返回与java.lang.Class<Home>类对应的Home实例。这个对象允许你反映类(找出它有哪些方法和变量,它的父类是什么等)并创建类的实例。

只有当你在Home的嵌套类中时,

Home.this才有意义。这里Home.this将返回嵌套类的对象嵌套在其中的类Home的对象。