Ограничение анонимных классов в Java? - PullRequest
1 голос
/ 21 февраля 2012

Я столкнулся с таким большим количеством проблем при использовании анонимного класса, что я не могу выполнить тест instanceOf, и при этом я не могу реализовать множественный интерфейс, поэтому кто-то может объяснить, что я могу или не могу сделать с анонимным классом в Java?

Ответы [ 2 ]

4 голосов
/ 21 февраля 2012

Анонимные классы работают всякий раз, когда

  • вам никогда не нужно обращаться к самому классу
  • вам нужно только расширить один класс или реализовать один интерфейс

... но кроме этого нет никаких существенных ограничений. Это прекрасно работает во многих случаях: например, во многих случаях, когда вы определяете обратные вызовы, слушателей или тому подобное.

3 голосов
/ 21 февраля 2012

Цель анонимного внутреннего класса - расширить и создать экземпляр существующего класса или реализовать один интерфейс за один шаг.

Его ограничения могут быть получены из приведенного выше:

  • Может быть расширен только один неконечный класс или реализован один интерфейс.
  • Доступны только конечные локальные переменные метода включения. (Это связано с тем, что нормальные локальные переменные будут вне области действия к тому времени, когда будут вызваны любые методы внутреннего класса.)
  • Вы не можете определить конструктор. (У класса нет имени.)

Если вам нужно несколько интерфейсов, вы можете использовать локальный внутренний класс, который похож на обычный внутренний класс, со своим собственным именем, но определенный в методе. Я должен признать, что никогда не видел, чтобы это использовалось на практике, и я вижу очень мало причин для того, чтобы кто-то делал это, надеюсь, кто-то придумает пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...