Klasy wewnętrzne mają sens, gdy są małe i nie wymagają nazw. Słuchacze w GUI to klasyczne przykłady, w których mają sens.
Jeśli zajęcia są duże i ważne, należy je nazwać i umieścić w osobnym pliku.
Klasy słuchaczy w zwykłych przykładach GUI robią jedną drobną rzecz, zwykle po prostu wysyłają do jakiejś innej funkcji do prawdziwej pracy.
Często używam klas zagnieżdżonych statycznie (które nie są technicznie klasami wewnętrznymi) dla klas, które są używane tylko w kontekście innej klasy - dobrym tego przykładem jest Map.Entry. Jest używany tylko w połączeniu z Mapą, więc posiadanie definicji Entry jako części interfejsu Map ma sens organizacyjny.
Zasadniczo nie używam innych typów klas zagnieżdżonych, takich jak niestatyczne klasy członkowskie i klasy lokalne. Ale czasami okazują się przydatne. Aby uzyskać dobry przykład legalnego użytkowania klas członków, zobacz kod źródłowy dla LinkedList.ListItr. Jest to prywatna klasa wewnętrzna, której celem jest zapewnienie implementacji ListIterator dla LinkedList. Aby to zrobić, dobrze jest mieć dostęp do prywatnych danych wewnątrz listy LinkedList. Aby osiągnąć to przy użyciu jedynie klas najwyższego poziomu, konieczne byłoby ujawnienie większej liczby publicznych metod w LinkedList, aby umożliwić ListIteratorowi uzyskanie podstawowej implementacji listy LinkedList. Zamiast tego, używanie klasy wewnętrznej pozwala programowi LinkedList zachować jego implementację jako prywatną, tak jak być powinno.
http://javabeginnerstutorial.com/core-java-tutorial/inner-class/ –
Generalnie dla uczestników akcji i kiedy nie chcesz ujawniać swojego połączenia innym. –
@Vaibhav Jain dzięki za link, znam składnię, ale jestem trochę zdezorientowana, kiedy go użyć i czy jest jakikolwiek handel z offu – Hild