Skip to main content

Vad är en anonym inre klass?

I objektorienterad datorprogrammering är en anonym inre klass en klass som deklareras inuti en metod men som inte är namngiven.En anonym inre klass har flera begränsningar som gör det annorlunda än en normal klass, inklusive en begränsning av omfattningen av de variabler som den kan komma åt.Det finns några mycket specifika situationer där användning av en anonym inre klass kan göra källkoden mer läsbar, men det används främst för att upprätthålla inkapsling där genereringen av separata klasser kan komplicera den.

Inkapsling är konceptet i objektorienterad programmering(Oop) att ett objekt och dess komponenter bör vara skyddade och bundna till objektet.Anonyma inre klasser och inre klasser i allmänhet hjälper till att förverkliga inkapsling för särskilt komplexa föremål.Istället för att behöva skapa en klass som förlitar sig på en separat extern, kan binda dem samman konstgjorda och potentiellt exponera några av komponenterna, kan en anonym inre klass binda de två ihop fast.

På vissa programmeringsspråk kan en anonym inre klass kanHjälp till att övervinna begränsningarna för enstaka arv.Om ett objekt ärver från en klass men sedan måste komma åt en annan, kan en inre klass genereras i farten och sedan överföras till lämpliga hanterare.Denna teknik är vanlig med återuppringningar och lyssnare.Det enda alternativet skulle vara att skapa en hel andra klass där endast en eller två metoder åsidosätts.

Anonyma inre klasser har vissa begränsningar för att förhindra att inkapsling och att upprätthålla omfattningen.Den primära begränsningen är att en anonym inre klass inte kan komma åt variabler i metoden där den ligger om inte dessa variabler förklaras som slutgiltiga.Detta beror på att den inre klassen kan fortsätta fungera utöver livslängden och metoden där den häckar.Variablerna i omslagsklassen skulle förstöras när dess liv var över, så referenser att den inre klassen innehöll skulle bli omedelbart ogiltiga.Det enda undantaget från detta är en slutlig variabel, eftersom det kommer att existera utöver instansen.

En av de mer specifika användningsområdena för en anonym inre klass är kodskydd.Många OOP -språk tillhandahåller en mekanism som kallas reflektion.Reflektion tillåter ett program att dissekera en annan klass och se vad dess medlemsvariabler och metoder är, men inte själva koden.Genom att använda en anonym inre klass är innehållet i den inre klassen skyddade från reflektion och den inre funktionen i den större klassen kan döljas effektivt.