Co to jest anonimowa klasa wewnętrzna?
W programowaniu komputerowym zorientowanym na obiekty anonimowa klasa wewnętrzna to klasa zadeklarowana wewnątrz metody, ale jest nienazwana. Anonimowa klasa wewnętrzna ma kilka ograniczeń, które różnią się od klasy normalnej, w tym ograniczenie zakresu zmiennych, do których można uzyskać dostęp. Istnieją kilka bardzo specyficznych sytuacji, w których stosowanie anonimowej klasy wewnętrznej może uczynić kod źródłowy bardziej czytelny, ale służy przede wszystkim do egzekwowania enkapsulacji, w których generowanie oddzielnych klas może go skomplikować.
enkapsulacja jest koncepcją w programowaniu zorientowanym na obiekty (OOP), że obiekt i jego komponenty powinny być w pewnym stopniu chroniono i związane z obiektem. Anonimowe klasy wewnętrzne i ogólnie klasy wewnętrzne pomagają zrealizować kapsułkowanie szczególnie złożonych obiektów. Zamiast tworzyć klasę, która opiera się na osobnej zewnętrznej, łącząc je ze sobą sztucznie i potencjalnie odsłaniając niektóre elementy, anonimowa klasa wewnętrzna może ttj. Dwa solidnie. Jeśli obiekt dziedziczy z jednej klasy, ale musi uzyskać dostęp do innej, klasa wewnętrzna może być generowana w locie, a następnie przekazać odpowiednim obsługi. Ta technika jest powszechna w przypadku oddzwonienia i słuchaczy wydarzeń. Jedyną alternatywą byłoby utworzenie całej drugiej klasy, w której tylko jedna lub dwie metody są zastąpione.
Anonimowe klasy wewnętrzne mają pewne ograniczenia, aby zapobiec złamaniu otaczania i egzekwowania zakresu. Głównym ograniczeniem jest to, że anonimowa klasa wewnętrzna nie może uzyskać dostępu do zmiennych metody, w której się znajduje, chyba że zmienne te zostaną ogłoszone jako ostateczne. Wynika to z faktu, że klasa wewnętrzna może nadal funkcjonować poza życiem klasy i metody, w której gniazduje. Zmienne owijaniaKlasa zostanie zniszczona po zakończeniu jego życia, więc odniesienia, które odbyła klasa wewnętrzna, stanie się natychmiast nieważna. Jedynym wyjątkiem jest zmienna końcowa, ponieważ będzie ona istniała poza instancją.
Jednym z bardziej szczegółowych zastosowań anonimowej klasy wewnętrznej jest ochrona kodu. Wiele języków OOP zapewnia mechanizm zwany odbiciem. Refleksja pozwala programowi wyróżnić inną klasę i zobaczyć, jakie są zmienne i metody jej członka, ale nie sam kod. Korzystając z anonimowej klasy wewnętrznej, zawartość klasy wewnętrznej jest chroniona przed refleksją, a wewnętrzne działanie większej klasy można skutecznie ukryć.