Вложенный класс внутри интерфейса - PullRequest
6 голосов
/ 01 февраля 2012

Java-компилятор позволяет мне написать определение класса внутри интерфейса. Есть ли какие-либо конкретные применения этого?

interface ClassInterface {

  void returnSomething();
  int x = 10;

  class SomeClass {
    private int y;

    private void classDoingSomething() {         
    }
  }
}

Пожалуйста, объясните.

Ответы [ 2 ]

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

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

public interface Switch {

    public enum Status {
        ON, OFF;
    }

    void doSwitch();
    Status getStatus();
}

Это позволяет избежать определения класса верхнего уровня с именем SwitchStatus (поскольку Status может быть слишком общим именем).

2 голосов
/ 01 февраля 2012

Вы бы использовали его для тесной привязки определенного типа к интерфейсу. Прочитайте Эта страница для получения дополнительной информации и примера определения класса внутри интерфейса.

...