Kaj je anonimni notranji razred?

V objektno usmerjenem računalniškem programiranju je anonimni notranji razred razred, ki je deklariran znotraj metode, vendar je neimenovan. Anonimni notranji razred ima več omejitev, zaradi katerih se razlikuje od običajnega razreda, vključno z omejitvijo obsega spremenljivk, do katerih lahko dostopa. Obstaja nekaj zelo specifičnih situacij, v katerih lahko uporaba anonimnega notranjega razreda naredi izvorno kodo bolj berljivo, vendar se uporablja predvsem za pomoč pri uveljavljanju enkapsulacije, kjer bi lahko ustvarjanje ločenih razredov zapletlo.

Enkapsulacija je koncept v objektno usmerjenem programiranju (OOP), da morajo biti objekt in njegove komponente na nek način zaščiteni in vezani na objekt. Anonimni notranji razredi in notranji razredi na splošno pomagajo uresničiti enkapsulacijo za posebej zapletene objekte. Namesto da bi morali ustvariti razred, ki se zanaša na ločenega zunanjega razreda, ki jih umetno povezuje in potencialno izpostavlja nekatere komponente, lahko anonimni notranji razred to dvoje trdno poveže skupaj.

V nekaterih programskih jezikih lahko anonimni notranji razred pomaga premagati omejitve posameznega dedovanja. Če predmet podeduje iz enega razreda, potem pa mora dostopati do drugega, se lahko sproti ustvari notranji razred in ga nato posreduje ustreznim upravljalcem. Ta tehnika je pogosta pri povratnih klicih in poslušalcih dogodkov. Edina alternativa bi bila ustvariti celoten drugi razred, v katerem sta preglasljena le ena ali dve metodi.

Anonimni notranji razredi imajo določene omejitve, da preprečijo prekinitev enkapsulacije in uveljavijo obseg. Glavna omejitev je, da anonimni notranji razred ne more dostopati do spremenljivk metode, v kateri se nahaja, razen če so te spremenljivke deklarirane kot končne. To je zato, ker bi notranji razred lahko še naprej deloval tudi po življenjskem obdobju razreda in metode, v kateri je ugnezdil. Spremenljivke razreda ovijanja bi bile uničene, ko bi se njegovo življenje končalo, tako da bi reference, ki jih je imel notranji razred, takoj postale neveljavne. Edina izjema pri tem je končna spremenljivka, ker bo obstajala izven primerka.

Ena od bolj specifičnih uporab anonimnega notranjega razreda je zaščita kode. Številni OOP jeziki zagotavljajo mehanizem, imenovan refleksija. Reflekcija omogoča programu, da razčleni drug razred in vidi, katere so njegove spremenljivke in metode, ne pa tudi kode same. Z uporabo anonimnega notranjega razreda je vsebina notranjega razreda zaščitena pred refleksijo in notranje delovanje večjega razreda se lahko učinkovito skrije.