Skip to main content

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 waarbij het genereren van afzonderlijke klassen het kan compliceren.

Encapsulatie is het concept in objectgeoriënteerd programmeren(OOP) dat een object en zijn componenten op een of andere 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 een anonieme binnenklasse de twee stevig vastbinden.

In sommige programmeertalen kan een anonieme binnenklasse kunstmatig aan elkaar binden en mogelijk een anonieme binnenklasse blootleggen.helpen om de beperkingen van enkele erfenis te overwinnen.Als een object van de ene klasse erft, maar dan toegang moet krijgen 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 het breken van 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 inpakklasse zouden 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.