Анонимные внутренние классы

Анонимный внутренний класс — это класс, которому не назначено имя. Этот раздел иллюстрирует, как анонимный внутренний класс может облегчать написание обработчиков событий. Рассмотрим аплет показанный в следующем листинге. Как и прежде, его цель состоит в том, чтобы отобразить строку "Mouse Pressed" в строке состояния программы просмотра аплета или браузера, когда нажимается кнопка мыши.

//package adapter;

//Демонстрация анонимного внутреннего класса.

import java.applet.*;

import java.awt.event.*;

/*

<applet code="AnonymousInnerClassDemo" width=200 height=100>

</applet>

*/

public class AnonymousInnerClassDemo extends Applet {

public void init() {

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent me) {

showStatus("Mouse Pressed");

}

});

}

}

В этой программе представлен один класс верхнего уровня —

AnonymousInnerClassDemo. Метод init() вызывает addMouseListener(). Его аргумент является выражением, которое определяет и строит экземпляр анонимного внутреннего класса. Давайте тщательно проанализируем это выражение.

Синтаксис new MouseAdapter (){...} указывает компилятору, что код между фигурными скобками определяет анонимный внутренний класс. Кроме того, этот класс расширяет класс MouseAdapter. Данный новый класс не именован, но он автоматически становится экземпляром класса, когда это выражение выполняется.

Поскольку этот анонимный внутренний класс определен в области видимости AnonymousInnerClassDemo, он имеет доступ ко всем переменным и методам в пределах области видимости этого класса. Поэтому он может прямо вызывать метод showStatus ().

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: