Шаг 47.
Язык программирования Java.
Локальные внутренние классы

На этом шаге мы рассмотрим локальные внутренние классы

Если внимательно проанализировать исходный код класса TalkingClock, то можно обнаружить, что имя класса TimerPrinter используется лишь однажды: при создании объекта данного типа в методе start(). В подобных случаях класс можно определить локально в отдельном методе, как это сделано ниже в примере:

public void start() {
    class TimePrinter implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            Date now = new Date();
            System.out.println("now " + now);
            if (beep) {
                Toolkit.getDefaultToolkit().beep();
            }
        }
    }

    ActionListener listener = new TimePrinter();
    Timer timer = new Timer(interval, listener);
    timer.start();
}

Локальные внутренние классы никогда не объявляются с помощью модификаторов доступа. Их область действия всегда ограничивается блоком, в котором они объявлены. У локальных внутренних классов имеется большое преимущество: они полностью скрыты от внешнего кода и даже от остальной части класса TalkingClock. Ни одному из методов, за исключением start(), ничего неизвестно о классе TimerPrinter.

На следующем шаге мы рассмотрим анонимные внутренние классы

Предыдущий шаг Содержание Следующий шаг