假设我们有一个班级名称Home。 Home.this 和 Home.class 之间有什么区别?他们指的是什么?
答案 0 :(得分:58)
<强> Home.this 强>
Home.this
指的是Home
类的当前实例。
此表达式的正式术语似乎是Qualified this,如Java语言规范的第15.8.4节所述。
在一个简单的课程中,说Home.this
和this
是等效的。此表达式仅用于存在内部类的情况,并且需要引用封闭类。
例如:
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.this
才有意义。这里Home.this
将返回嵌套类的对象嵌套在其中的类Home
的对象。