внутренний класс в интерфейсе - PullRequest
86 голосов
/ 08 марта 2010

Можно ли создать внутренний класс в интерфейсе? Если это возможно, почему мы хотим создать такой внутренний класс, так как мы не собираемся создавать какие-либо объекты интерфейса?

Помогают ли эти внутренние классы в каком-либо процессе разработки?

Ответы [ 13 ]

0 голосов
/ 14 июня 2017

Мне нужен один прямо сейчас. У меня есть интерфейс, где было бы удобно возвращать уникальный класс из нескольких его методов. Этот класс имеет смысл только в качестве контейнера для ответов от методов этого интерфейса.

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

0 голосов
/ 20 октября 2016

Вы также можете создать статические классы «Помощник» для общей функциональности для объектов, реализующих этот интерфейс:

public interface A {
    static class Helper {
        public static void commonlyUsedMethod( A a ) {
           ...
        }
    }
}
0 голосов
/ 02 июня 2016

Я нашел применение для этого типа конструкции.

  1. Вы можете использовать эту конструкцию для определения и группировки всех статических конечных констант.
  2. Так как это интерфейс, вы можете реализовать это в классе.

У вас есть доступ ко всем сгруппированным константам; имя класса в этом случае выступает в качестве пространства имен.

...