Вложенный интерфейс и реализация поведения класса

Это примерно access specifier для классов, реализующих вложенный интерфейс. Более подробная информация приведена ниже:

interface Fun{
    interface NestedFun{
        void nestedFunction();
    }
    void function();
}

class A implements Fun{
    class B implements Fun.NestedFun{
        //implements functionality
    }

    // implements functionality
}

Каким будет спецификатор доступа для class B, поскольку мы знаем, что по умолчанию вложенными интерфейсами являются static. Заставит ли это класс реализовать такие interfacestatic?

Нет. И static тоже не модификатор доступа.

Andy Turner 30.05.2019 09:56

Точно такая же ситуация с Map.Entry и AbstractMap.SimpleEntry

Paul Lemarchand 30.05.2019 09:57

@AndyTurner спасибо, внес изменения

Abhiroj Panwar 30.05.2019 10:00
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет.

Все static означает в контексте класса, что это вложенный класс без неявной ссылки на экземпляр внешнего класса, который его создал.

Независимо от того, существует ли ссылка в классе, зависит от реализации; интерфейсы не связаны с реализацией.

поэтому я не могу создать экземпляр B как new A.B() в этом случае.

Abhiroj Panwar 30.05.2019 10:01

@AbhirojPanwar Нет, ты не можешь.

Sweeper 30.05.2019 10:03

Вы можете создать экземпляр либо как new A().new B() (или someA.new B()), либо с помощью new A.B(), если вы сделаете B явно статическим.

Andy Turner 30.05.2019 10:03

Другие вопросы по теме