Скажем, у нас есть имя класса Home. В чем разница между Home.this и Home.class? К чему они относятся?
Значение этого и .class в java
Ответ 1
home.This
Home.this
относится к текущему экземпляру класса Home
.
Формальным термином для этого выражения является Qualified this, как указано в разделе 15.8.4 Спецификации языка Java.
В простом классе выражение 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
.
Формальным термином для этого выражения является литерал класса, как указано в разделе 15.8.2 Спецификации языка Java.
В большинстве случаев это выражение используется, когда используется отражение, и ему нужен способ ссылаться на сам класс, а не на экземпляр класса.
Ответ 2
Home.class
возвращает экземпляр java.lang.Class<Home>
, соответствующий классу Home
. Этот объект позволяет вам отражать класс (выяснить, какие методы и переменные он имеет, каков его родительский класс и т.д.) И создавать экземпляры класса.
Home.this
имеет смысл только в том случае, если вы находитесь внутри вложенного класса Home. Здесь Home.this
возвращает объект класса Home
, в который вложен объект вложенного класса.