Apa itu Kelas Dalam Anonim?

Dalam pemrograman komputer berorientasi objek, kelas dalam anonim adalah kelas yang dideklarasikan di dalam metode tetapi tidak disebutkan namanya. Kelas dalam anonim memiliki beberapa batasan yang membuatnya berbeda dari kelas normal, termasuk batasan ruang lingkup variabel yang dapat diaksesnya. Ada beberapa situasi yang sangat spesifik di mana menggunakan kelas dalam anonim dapat membuat kode sumber lebih mudah dibaca, tetapi ini terutama digunakan untuk membantu menegakkan enkapsulasi di mana pembuatan kelas terpisah dapat memperumitnya.

Enkapsulasi adalah konsep dalam pemrograman berorientasi objek (OOP) bahwa suatu objek dan komponennya harus dilindungi dan diikat dengan cara tertentu ke objek. Kelas dalam anonim, dan kelas dalam secara umum, membantu mewujudkan enkapsulasi untuk objek yang sangat kompleks. Alih-alih harus membuat kelas yang bergantung pada kelas eksternal yang terpisah, mengikatnya bersama-sama secara artifisial dan berpotensi mengekspos beberapa komponen, kelas dalam anonim dapat mengikat keduanya dengan kokoh.

Dalam beberapa bahasa pemrograman, kelas dalam anonim dapat membantu mengatasi pembatasan pewarisan tunggal. Jika suatu objek mewarisi dari satu kelas tetapi kemudian perlu mengakses yang lain, kelas dalam dapat dibuat dengan cepat dan kemudian diteruskan ke penangan yang sesuai. Teknik ini umum dengan panggilan balik dan pendengar acara. Satu-satunya alternatif adalah membuat seluruh kelas kedua di mana hanya satu atau dua metode yang diganti.

Kelas dalam anonim memiliki beberapa batasan untuk mencegah pemecahan enkapsulasi dan untuk menegakkan ruang lingkup. Pembatasan utama adalah bahwa kelas dalam anonim tidak dapat mengakses variabel dari metode di mana ia berada kecuali variabel-variabel tersebut dideklarasikan sebagai final. Ini karena kelas dalam dapat terus berfungsi di luar kehidupan kelas dan metode di mana ia bersarang. Variabel dari kelas pembungkus akan dihancurkan setelah masa pakainya berakhir, sehingga referensi yang dimiliki kelas dalam akan langsung menjadi tidak valid. Satu-satunya pengecualian untuk ini adalah variabel final, karena akan ada di luar instance.

Salah satu kegunaan yang lebih spesifik untuk kelas dalam anonim adalah perlindungan kode. Banyak bahasa OOP menyediakan mekanisme yang disebut refleksi. Refleksi memungkinkan program untuk membedah kelas lain dan melihat apa variabel dan metode anggotanya, tetapi bukan kode itu sendiri. Dengan menggunakan kelas dalam anonim, isi kelas dalam dilindungi dari refleksi dan cara kerja kelas yang lebih besar dapat disembunyikan secara efektif.