Hva er en anonym indre klasse?
I objektorientert dataprogrammering er en anonym indre klasse en klasse som er erklært inne i en metode, men som ikke er navngitt. En anonym indre klasse har flere begrensninger som gjør den forskjellig fra en normal klasse, inkludert en begrensning i omfanget av variablene den kan få tilgang til. Det er noen veldig spesifikke situasjoner der bruk av en anonym indre klasse kan gjøre kildekoden mer lesbar, men den brukes først og fremst til å håndheve innkapsling der generering av separate klasser kan komplisere den.
Innkapsling er konseptet i objektorientert programmering (OOP) at et objekt og dets komponenter på noen måte skal beskyttes og bundes til objektet. Anonyme indre klasser, og indre klasser generelt, er med på å realisere innkapsling for spesielt komplekse objekter. I stedet for å måtte opprette en klasse som er avhengig av en egen ekstern klasse, som binder dem sammen kunstig og potensielt utsetter noen av komponentene, kan en anonym indre klasse binde de to sammen solid.
I noen programmeringsspråk kan en anonym indre klasse bidra til å overvinne begrensningene for enkeltarv. Hvis et objekt arver fra en klasse, men deretter trenger tilgang til en annen, kan en indre klasse genereres mens du flytter og deretter sendes til de aktuelle håndtererne. Denne teknikken er vanlig med tilbakeringinger og lyttere. Det eneste alternativet ville være å lage en hel andre klasse der bare en eller to metoder blir tilsidesatt.
Anonyme indre klasser har noen begrensninger på plass for å forhindre brudd på innkapsling og for å håndheve omfang. Den primære begrensningen er at en anonym indre klasse ikke kan få tilgang til variabler av metoden den ligger i med mindre disse variablene er erklært som endelige. Dette er fordi den indre klassen kan fortsette å fungere utover livet til klassen og metoden den hekker. Variablene til innpakningsklassen ville bli ødelagt når levetiden var over, slik at referansene den indre klassen holdt, umiddelbart ville bli ugyldige. Det eneste unntaket fra dette er en endelig variabel, fordi den vil eksistere utenfor forekomsten.
En av de mer spesifikke bruksområdene for en anonym indre klasse er kodebeskyttelse. Mange OOP-språk sørger for en mekanisme som kalles refleksjon. Refleksjon lar et program dissekere en annen klasse og se hva dets medlemsvariabler og -metoder er, men ikke selve koden. Ved å bruke en anonym indre klasse er innholdet i den indre klassen beskyttet mot refleksjon, og den indre klasses arbeid kan være skjult.