Skip to main content

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 har 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 for å hjelpe til(OOP) at et objekt og dets komponenter på en eller annen måte skal beskyttes og bundet til objektet.Anonyme indre klasser og indre klasser generelt er med på å realisere innkapsling for spesielt komplekse objekter.I stedet for å måtte lage en klasse som er avhengig av en egen ekstern, og binder dem sammen kunstig og potensielt å utsette noen av komponentene, kan en anonym indre klasse binde de to sammen solid.

I noen programmeringsspråk kan en anonym indre klasse kanHjelp til å overvinne begrensningene for enkeltarv.Hvis et objekt arver fra en klasse, men da trenger å få tilgang til en annen, kan en indre klasse genereres på farten 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 overstyrt.

Anonyme indre klasser har noen begrensninger på plass for å forhindre innkapsling av brudd og for å håndheve omfang.Den primære begrensningen er at en anonym indre klasse ikke kan få tilgang til variabler av metoden der den ligger med mindre disse variablene er erklært som endelig.Dette er fordi den indre klassen kan fortsette å fungere utover klassen og metoden den hekker i.Variablene i innpakningsklassen ville bli ødelagt når livet var over, så referansene den indre klassen som ble holdt ville bli øyeblikkelig 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 medlemsvariablene og metodene er, men ikke selve koden.Ved å bruke en anonym indre klasse, er innholdet i den indre klassen beskyttet mot refleksjon og den indre virkningen av den større klassen kan være skjult effektivt.