bien, sé que es la regla:¿Por qué la interfaz solo se puede declarar en la clase de nivel superior?
De acuerdo con JLS: 8.1.3 Clases Internas e instancias cercadas, interiores clases no puede declarar inicializadores estáticos o interfaces miembros. Las clases internas no pueden declarar miembros estáticos, a menos que sean campos constantes de tiempo de compilación.
8.5.2 De acuerdo con declaraciones de tipo estático miembros, "interfaces de miembros son siempre implícitamente estática. Está permitido pero no es necesario para la declaración de un miembro de interfaz de enumerar explícitamente la modificador static". Siempre son de alto nivel, no interiores.
Me pregunto por qué. ¿Qué puede pasar si se nos permite declarar la interfaz dentro de una clase interna? ¿No se convertirá la clase interna en una clase de nivel superior si la agrego a otro archivo de Clase?
Hmm, ¡muy interesante! Nunca sé que la interfaz puede declararse como estática. ¿Qué significa "estático" aquí? He probado la interfaz estática de Google pero no he encontrado nada. P/s: solo edite mi publicación en la línea que cita, para corregir el error de gramática. –
@ W.N .: Las interfaces son implícitamente estáticas. Esa declaración es solo redundante. –
@Ryan buen punto, también acabo de volver a leer la pregunta y actualizaré mi respuesta. – Thomas