Oleh : Reza Ervani
بسم الله الرحمن الرحيم
Class-class lokal adalah seperti class inner (nested non statik) yang didefinisikan didalam suatu metode atau blok ({ ... }
)di dalam suatu metode. Berikut contohnya :
class Outer { public void printText() { class Local { } Local local = new Local(); } }
Class lokal hanya dapat diakses dari dalam metode atau blok dimana mereka didefinisikan.
Class lokal dapat mengakses member (fields dan metode) dari class penaungnya seperti class inner.
Class lokal juga dapat mengakses variabel lokal di dalam metode atau blok yang sama, untuk memberikan variabel tersebut kita harus mendeklarasikannya dengan final
.
Dari class lokal Java 8 juga dapat mengakses variabel dan parameter lokal pada metode dimana class lokal tersebut dideklarasikan. Parameter harus dideklarasikan dengan final
atau jadi effectually final. Effectually final berarti bahwa variabel tersebut tidak pernah berubah setelah dia diinisialisasi. Parameter metode seringkali pula bersifat effectually final.
Class-class lokal juga dapat dideklarasikan di dalam metode statik. Dalam hal ini, class lokal hanya dapat mengakses bagian statik dari class penaungnya. Class lokal tersebut tidak dapat berisi semua jenis deklarasi statik (konstanta diperkenankan – variabel dideklarasikan dengan static final
), karena secara alami class lokal tersebut bersifat non statik – bahkan jika dideklarasikan didalam suatu metode statik
Beberapa aturan di shadowing juga berlaku untuk class-class lokal sebagaimana untuk class-class inner.
Leave a Reply