Tak, można tworzyć zarówno zagnieżdżone klasy lub wewnętrzną klasę wewnątrz interfejsu Java (Zauważ, że w przeciwieństwie do popularnego przekonania, że nie ma czegoś takiego jak " statyczne klasy wewnętrzna «: To po prostu nie ma sensu, nie ma nic «wewnętrzny» i nie» outter ”, gdy klasa zagnieżdżona jest statyczna, więc nie może być„ statyczną wewnętrzną ”).
W każdym razie poniższe kompilacje dobrze się komponują:
public interface A {
class B {
}
}
Widziałem, że wstawiał jakiś rodzaj "sprawdzania kontraktu" bezpośrednio w definicji interfejsu (cóż, w klasie zagnieżdżonej w interfejsie, która może mieć statyczne metody, w przeciwieństwie do samego interfejsu, który nie może). Wyglądam tak, jeśli dobrze pamiętam.
public interface A {
static class B {
public static boolean verifyState( A a ) {
return (true if object implementing class A looks to be in a valid state)
}
}
}
Zwróć uwagę, że nie komentuję użyteczności takiej rzeczy, po prostu odpowiadam na twoje pytanie: można to zrobić i jest to jedyny rodzaj wykorzystania, jaki widziałem.
Teraz nie będę komentował przydatności takiego konstruktu i od tego, co widziałem: widziałem go, ale nie jest to zbyt powszechna konstrukcja.
Baza kodów 200KLOC tutaj, gdzie dzieje się to dokładnie zero razy (ale mamy wiele innych rzeczy, które uważamy za złe praktyki, które zdarzają się dokładnie zero razy, a inni ludzie uznaliby to za całkowicie normalne, więc ...).