Подтвердить что ты не робот

Значение этого и .class в java

Скажем, у нас есть имя класса Home. В чем разница между Home.this и Home.class? К чему они относятся?

4b9b3361

Ответ 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, в который вложен объект вложенного класса.