Dobra, wiem, że to reguła:Dlaczego interfejs można deklarować tylko w klasie najwyższego poziomu?
Według JLS: 8.1.3 Klasy wewnętrzne i załączając przypadkach wewnętrzne klasy nie może zadeklarować inicjatorów statyczne lub interfejsy członków. Klasy wewnętrzne mogą nie zadeklarować statycznych elementów, chyba że są stałymi polami stałej kompilacji.
Według 8.5.2 Statyczny element członkowski typu deklaracji, „interfejsy użytkownika zawsze są domyślnie statyczne. Jest to dozwolone, ale nie wymagane dla deklaracji z interfejsem użytkownik jawnie notować statycznego modyfikator”. Są zawsze na najwyższym poziomie, a nie wewnętrznie.
Po prostu zastanawiam się, dlaczego. Co może się zdarzyć, jeśli możemy zadeklarować interfejs wewnątrz wewnętrznej klasy? Czy klasa wewnętrzna nie stanie się klasą najwyższego poziomu, jeśli umieści się ją w innym pliku klasy?
Hmm, ciekawe! Nigdy nie wiem, że interfejs można zadeklarować jako statyczny. Co oznacza tutaj "statyczny"? Próbowałem już interfejsu statycznego Google, ale niczego nie odkryłem. P/s: Po prostu edytuj mój post w cytowanej linii, aby poprawić błąd gramatyki. –
@ W.N .: Interfejsy są niejawnie statyczne. Ta deklaracja jest po prostu rewolucyjna. –
@Ryan dobry punkt, ja też po prostu ponownie przeczytałem pytanie i zaktualizuję moją odpowiedź. – Thomas