Va bene, so che è la regola:Perché l'interfaccia può essere dichiarata solo nella classe di primo livello?
Secondo JLS: 8.1.3 Classi interne e istanze di contenimento, interni classi non può dichiarare inizializzatori statici o interfacce membri. Le classi interne non possono dichiarare membri statici, a meno che non siano campi costanti in fase di compilazione .
Secondo 8.5.2 statici Member dichiarazioni, "interfacce Stati sono sempre implicitamente statica. E 'consentito, ma non richiesto per la dichiarazione di un'interfaccia utente per elencare in modo esplicito la statica modificatore". Sono sempre di alto livello, non interni.
Mi chiedo solo perché. Cosa può accadere se siamo autorizzati a dichiarare un'interfaccia all'interno di una classe interiore? La classe interna non diventerà una classe di alto livello se la inserirò in un altro file di classe?
Hmm, interessante! Non so mai che l'interfaccia possa essere dichiarata statica. Cosa significa "statico" qui? Ho provato l'interfaccia statica su Google ma non ho trovato nulla. P/s: basta modificare il mio post sulla linea che citi, per correggere l'errore di grammatica. –
@ W.N .: Le interfacce sono implicitamente statiche. Quella dichiarazione è appena ridipinta. –
@Ryan buon punto, ho anche solo riletto la domanda e aggiornerò la mia risposta. – Thomas