Java Static Inner Class <Br /> Mendefinisikan kelas dalam sebagai kelas statis pada dasarnya sama dengan mendefinisikan kelas lain sebagai kelas statis, dan aturan referensi pada dasarnya sama. Namun, detailnya masih sangat berbeda. Secara khusus, terutama ada bidang -bidang berikut untuk menarik perhatian semua pengembang program.
(1) Secara umum, jika kelas dalam tidak didefinisikan sebagai kelas dalam statis, maka tidak dapat didefinisikan sebagai variabel anggota statis dan metode anggota statis ketika mendefinisikan variabel anggota atau metode anggota. Artinya, anggota statis tidak dapat dinyatakan dalam kelas dalam non-statis.
(Ii) Secara umum, kelas eksternal non-statis dapat mengakses variabel anggota dan metode kelas eksternal mereka sesuka hati (termasuk metode yang dinyatakan sebagai pribadi). Namun, jika kelas dalam dinyatakan statis, ia akan memiliki banyak kelas eksternal termasuk sendiri. batasan. Kelas dalam statis tidak dapat mengakses variabel anggota non-statis dan metode kelas eksternalnya.
(3) Saat membuat kelas internal anggota non-statis di kelas, ada ketentuan wajib, yaitu, contoh kelas internal harus terikat pada contoh kelas eksternal. Maka Anda perlu mendefinisikan kelas dalam statis di kelas eksternal, dan Anda tidak perlu menggunakan kata kunci baru untuk membuat instance dari kelas dalam. Artinya, saat membuat objek internal dari kelas statis, objek kelas eksternal tidak diperlukan.
Java menggunakan kelas internal berikut saat menerapkan LinkedList:
Kelas Publik LinkedList <E> memperluas abstrak abstrak yang sama <e> mengimplementasikan daftar <e>, deque <e>, kloning, java.io.serializable {............ kelas statis pribadi en mencoba <e> {E elemen; OUS sebelumnya; ;
Berikut adalah penggunaan khas kelas dalam statis
Kelas Alat Sinkronisasi Java
/** * Threads perlu mulai mengimpor data antarmuka ke dalam target dalam batch. yang merupakan esensi dari masalah * sinkronisasi antar-utusan. Itu memungkinkannya untuk diselesaikan sebelum menyelesaikan satu set * operasi yang dieksekusi di utas lain. * Inisialisasi CountdownLatch dengan jumlah yang diberikan. Karena metode hitung mundur () dipanggil, metode * menunggu akan diblokir sampai jumlah saat ini mencapai nol. Setelah itu, semua utas yang menunggu akan dirilis dan semua panggilan berikutnya untuk menunggu akan segera dikembalikan. * Fenomena ini hanya terjadi sekali - jumlah tidak dapat diatur ulang (ini sangat penting). Jika Anda perlu mengatur ulang penghitungan, pertimbangkan untuk menggunakan cyclicbarrier. * Berikut ini adalah contoh sederhana untuk mensimulasikan persyaratan ini. * Konten kelasnya relatif kompleks* **/ impor java.util.arraylist; <Integer> strlist = null; } public static void main (string args []) {boolean isEnd = true; )> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::: 0 && Count <20) {CountdownLatch StartIgnal = Countdownlatch baru (1); ++ i) {utas baru (D. Pekerja baru (StartIgnal, Donesignal, I)). Start (); ) {Acak r = acak baru (); (); Tambah (I); Donesignal CountdownLatch; untuk utas utama untuk menjalankan Countdown StartIgnal.AW AIT (); ) {int start = (i)*(50/5); strlist.get (i) + "---" + "dihapus");