Wat is een anonieme innerlijke klasse?
In objectgeoriënteerde computerprogrammering is een anonieme binnenklasse een klasse die binnen een methode wordt verklaard maar niet nader genoemde is. Een anonieme binnenklasse heeft verschillende beperkingen die het anders maken dan een normale klasse, inclusief een beperking van de reikwijdte van de variabelen waartoe hij toegang heeft. Er zijn enkele zeer specifieke situaties waarin het gebruik van een anonieme binnenklasse de broncode leesbaarder kan maken, maar het wordt voornamelijk gebruikt om inkapseling te handhaven waar het genereren van afzonderlijke klassen het kan compliceren.
Encapsulation is het concept in objectgeoriënteerde programmering (OOP) dat een object en zijn componenten op een manier moeten worden beschermd en gebonden aan het object. Anonieme innerlijke klassen en innerlijke klassen in het algemeen helpen om inkapseling te realiseren voor bijzonder complexe objecten. In plaats van een klasse te moeten maken die afhankelijk is van een afzonderlijke externe, kan ze kunstmatig samenbinden en mogelijk enkele van de componenten blootleggen, kan een anonieme binnenklasse tdwz de twee stevig samen.
In sommige programmeertalen kan een anonieme binnenklasse helpen de beperkingen van enkele erfenis te overwinnen. Als een object van de ene klasse erft, maar dan toegang moet hebben tot een andere, kan een binnenklasse meteen worden gegenereerd en vervolgens aan de juiste handlers doorgegeven. Deze techniek is gebruikelijk bij callbacks en evenementenluisteraars. Het enige alternatief zou zijn om een hele tweede klasse te maken waarin slechts één of twee methoden worden opgeheven.
Anonieme binnenklassen hebben enkele beperkingen om inkapseling te voorkomen en de scope af te dwingen. De primaire beperking is dat een anonieme binnenklasse geen toegang heeft tot variabelen van de methode waarin deze zich bevindt, tenzij die variabelen als definitief worden verklaard. Dit komt omdat de innerlijke klasse zou kunnen blijven functioneren voorbij het leven van de klasse en methode waarin deze nestelt. De variabelen van de verpakkingKlasse zou worden vernietigd zodra het leven voorbij was, dus de referenties die de innerlijke klasse zou worden gehouden, zouden onmiddellijk ongeldig worden. De enige uitzondering hierop is een definitieve variabele, omdat deze buiten het exemplaar zal bestaan.
Een van de meer specifieke toepassingen voor een anonieme binnenklasse is codebescherming. Veel OOP -talen zorgen voor een mechanisme dat reflectie wordt genoemd. Reflectie stelt een programma in staat om een andere klasse te ontleden en te zien wat de variabelen en methoden voor leden zijn, maar niet de code zelf. Door een anonieme binnenklasse te gebruiken, wordt de inhoud van de binnenklasse beschermd tegen reflectie en kan de innerlijke werking van de grotere klasse effectief worden verborgen.