Hvad er en anonym indre klasse?
Ved objektorienteret computerprogrammering er en anonym indre klasse en klasse, der er erklæret inde i en metode, men ikke er navngivet. En anonym indre klasse har flere begrænsninger, der gør den forskellig fra en normal klasse, herunder en begrænsning i omfanget af de variabler, den har adgang til. Der er nogle meget specifikke situationer, hvor brug af en anonym indre klasse kan gøre kildekoden mere læsbar, men den bruges primært til at hjælpe med at håndhæve indkapsling, hvor generering af separate klasser kan komplicere det.
Indkapsling er begrebet i objektorienteret programmering (OOP), at et objekt og dets komponenter på en eller anden måde skal være beskyttet og bundet til objektet. Anonyme indre klasser og indre klasser generelt bidrager til at realisere indkapsling for særligt komplekse genstande. I stedet for at skulle oprette en klasse, der er afhængig af en separat ekstern klasse, der binder dem sammen kunstigt og potentielt udsætter nogle af komponenterne, kan en anonym indre klasse binde de to sammen solidt.
I nogle programmeringssprog kan en anonym indre klasse hjælpe med at overvinde begrænsningerne i en enkelt arv. Hvis et objekt arver fra en klasse, men derefter skal have adgang til en anden, kan en indre klasse genereres undervejs og derefter overføres til de relevante håndterere. Denne teknik er almindelig med tilbagekald og begivenhedslyttere. Det eneste alternativ ville være at skabe en hel anden klasse, hvor kun en eller to metoder tilsidesættes.
Anonyme indre klasser har nogle begrænsninger på plads for at forhindre brud på indkapsling og for at håndhæve omfang. Den primære begrænsning er, at en anonym indre klasse ikke kan få adgang til variabler af den metode, hvor den befinder sig, medmindre disse variabler er erklæret som endelige. Dette skyldes, at den indre klasse kan fortsætte med at fungere ud over den levetid for den klasse og metode, som den indlejrer. Variablerne i indpakningsklassen ville blive ødelagt, når dens levetid var forbi, så referencerne til den indre klasse blev øjeblikkeligt ugyldige. Den eneste undtagelse fra dette er en endelig variabel, fordi den vil eksistere ud over forekomsten.
En af de mere specifikke anvendelser til en anonym indre klasse er kodebeskyttelse. Mange OOP-sprog giver mulighed for en mekanisme kaldet reflektion. Reflektion giver et program mulighed for at dissekere en anden klasse og se, hvad dets medlemsvariabler og -metoder er, men ikke selve koden. Ved at bruge en anonym indre klasse er indholdet af den indre klasse beskyttet mod refleksion, og den indre klasses indre arbejde kan effektivt skjules.