2010-11-18 2 views
2

http://www.java2s.com/Code/Java/Event/PropertyChangeListenerSample.htmНаписание класса при его создании?

(Java)

В приведенном выше примере, я заметил линию

PropertyChangeListener propertyChangeListener = new PropertyChangeListener() { 

сам по себе, это не имеет смысла, как PropertyChangeListener (java.beans.PropertyChangeListener) является интерфейс и, следовательно, не является реальным.

Однако сразу после этого кажется, что класс, реализующий PropertyChangeListener, записывается без создания инструкции ключевого слова класса. Я никогда не сталкивался с этим синтаксисом раньше.

Что называется этим синтаксисом и как его правильно использовать? Кроме того, может ли кто-нибудь дать мне больше примеров? Я точно не знаю, что делать в Google, поэтому любые ссылки будут полезны.

ответ

1

Anonymous inner class (Материал из Википедии)

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

Это позволяет избежать большой монолитный actionPerformed (ActionEvent) метод с несколькими, если-иначе переходит к идентифицировать источник события. Этот код часто считается беспорядочным , а внутренние колебания класса считаются лучшими во всех отношениях.

Это в основном используется (в AWT), когда разработчики хотят, чтобы написать свои собственные ActionEvent для и ActionListener и EventListener.

Вы также можете найти его в java.util.Vector elements() метод, который имеет анонимный внутренний класс Enumerable.

2

Это пример anonymous inner class.

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

0

Это называется Anonymous inner Class ... См. this question для более подробной информации во внутренних классах