Hvad er en anonym indre klasse?
I objektorienteret computerprogrammering er en anonym indre klasse en klasse, der er erklæret inde i en metode, men ikke navngives. En anonym indre klasse har flere begrænsninger, der gør den anderledes end en normal klasse, herunder en begrænsning af omfanget af de variabler, den kan få 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 genereringen af separate klasser kan komplicere den.
Indkapsling er konceptet i objektorienteret programmering (OOP), som et objekt og dets komponenter skal være på en eller anden måde, der er beskyttet og bundet til objektet. Anonyme indre klasser og indre klasser generelt hjælper med 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 kunstigt og potentielt udsætter nogle af komponenterne, kan en anonym indre klasse tdvs. de to sammen solidt.
På 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 har brug for at få adgang til en anden, kan en indre klasse genereres på farten og derefter sendes til de passende 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, hvori den ligger, medmindre disse variabler erklæres som endelige. Dette skyldes, at den indre klasse kunne fortsætte med at fungere ud over livet i klassen og metoden, hvor den hekker. Variablerne i indpakningenKlassen ville blive ødelagt, når dens levetid var forbi, så referencerne den indre klasse, der blev afholdt, ville blive ø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 sørger for en mekanisme kaldet refleksion. 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 funktion af den større klasse kan effektivt skjules.