Значение .this и .class в java

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

35
задан Gooner 27 October 2012 в 20:38
поделиться

2 ответа

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.

В большинстве случаев это выражение используется, когда используется отражение , и требуется способ ссылки на сам класс, а не на его экземпляр.

61
ответ дан 27 November 2019 в 07:03
поделиться

Home.class возвращает экземпляр java.lang.Class , который соответствует классу Home . Этот объект позволяет вам размышлять над классом (узнавать, какие методы и переменные у него есть, каков его родительский класс и т. Д.) И создавать экземпляры класса.

Home.this имеет смысл, только если вы находитесь внутри вложенного класса Home. Здесь Home.this вернет объект класса Home , в который вложен объект вложенного класса.

4
ответ дан 27 November 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: