Ответ 1
Это позволяет помещать вспомогательный интерфейс в пространство имен, которое может иметь больше смысла, чем другой пакет. Хорошим примером этого из Java API является Map.Entry
интерфейс. Entry
действительно имеет смысл в контексте чего-то реализует интерфейс Map
, поэтому он определяется как интерфейс внутри интерфейса.
Обратите внимание, что кроме внутренних классов внутренние интерфейсы всегда статичны, поскольку Джесси Глик упоминает в его ответ на связанные вопросы.