Действительно ли возможно создать внутренний класс в интерфейсе? Если бы возможно, почему мы хотели бы создать внутренний класс как этот, так как мы не собираемся создавать какие-либо интерфейсные объекты?
Эти внутренние классы помогают в каком-либо Процессе разработки?
Да, вы можете создать как вложенный класс, так и внутренний класс внутри интерфейса Java (обратите внимание, что вопреки распространенному мнению не существует такой вещи, как « статический внутренний класс » : это просто не имеет смысла, нет ничего «внутреннего» или «внешнего» класса, когда вложенный класс является статическим, поэтому он не может быть «статическим внутренним»).
В любом случае, следующий код компилируется нормально:
public interface A {
class B {
}
}
Я видел, как он использовал какую-то «проверку контракта» непосредственно в определении интерфейса (ну, в классе, вложенном в интерфейс, который может иметь статические методы, в отличие от самого интерфейса, который не может). Выглядит вот так, если я правильно помню.
public interface A {
static class B {
public static boolean verifyState( A a ) {
return (true if object implementing class A looks to be in a valid state)
}
}
}
Обратите внимание, что я не комментирую полезность такой вещи, я просто отвечаю на ваш вопрос: это можно сделать, и это один из видов использования, который я видел.
Сейчас я не буду комментировать полезность такой конструкции, и, судя по тому, что я видел: я видел ее, но это не очень распространенная конструкция.
Кодовая база 200KLOC здесь, где это происходит точно в нулевое время (но затем у нас есть много других вещей, которые мы считаем плохими практиками, которые также происходят точно в нулевое время, что другие люди сочли бы совершенно нормальным, так что ...).