Video: 2# Kuy Belajar Algoritma dan Struktur Data : Generic 2024
Salah satu tujuan desain asli untuk Java adalah menjaga bahasa sesederhana mungkin. Pengembang bahasa mengambil beberapa fitur C ++ yang tidak perlu rumit dan melemparkannya ke luar jendela. Hasilnya adalah bahasa yang elegan dan ramping. Beberapa orang mengatakan bahasa itu terlalu ramping.
Jadi setelah beberapa tahun berdiskusi dan bertengkar, Java menjadi sedikit lebih rumit. Pada tahun 2004, Java memiliki tipe enum, ditingkatkan untuk loop, impor statis, dan beberapa fitur baru lainnya yang menarik. Tapi fitur baru yang paling banyak dibicarakan adalah pengenalan obat generik.
ArrayList people = new ArrayList ();
Penggunaan sesuatu seperti baru di Jawa 5. 0. Di Jawa gaya lama, Anda akan menulis
ArrayList people = new ArrayList ();
Pada masa itu, seorang ArrayList dapat menyimpan hampir semua barang yang ingin Anda masukkan ke dalamnya - nomor, Akun, Kamar, String … semuanya. Kelas ArrayList sangat serbaguna, namun dengan fleksibilitas ini muncul beberapa sakit kepala. Jika Anda bisa memasukkan sesuatu ke dalam ArrayList, Anda tidak dapat dengan mudah memprediksi apa yang akan Anda dapatkan dari ArrayList.
Secara khusus, Anda tidak dapat dengan mudah menulis kode yang menganggap Anda telah menyimpan beberapa jenis nilai tertentu dalam ArrayList. Inilah contohnya:
ArrayList things = new ArrayList (); sesuatu. tambahkan (Akun baru ()); Akun myAccount = hal. mendapatkan (0); // JANGAN GUNAKAN INI. KODE BURUK.
Di baris ketiga, panggilan untuk mendapatkan (0) meraih nilai paling awal dalam koleksi barang. Panggilan untuk mendapatkan (0) tidak apa-apa, tapi kemudian kompilator tersedak pada percobaan tugas ke myAccount. Anda mendapat pesan di baris ketiga yang mengatakan bahwa apapun yang Anda dapatkan dari daftar barang tidak dapat dimasukkan ke dalam variabel myAccount.
Anda mendapatkan pesan ini karena, pada saat kompilator mencapai baris ketiga, telah lupa bahwa item yang ditambahkan pada baris kedua adalah tipe Akun!
Pengenalan obat generik memperbaiki masalah ini:
ArrayList things = new ArrayList (); sesuatu. tambahkan (Akun baru ()); Akun myAccount = hal. mendapatkan (0); // GUNAKAN KODE INI INSTEAD. KODE YANG BAIK.
Menambahkan di dua tempat memberitahu kompilator bahwa barang-barang menyimpan kejadian Account - tidak ada yang lain. Jadi, pada baris ketiga dalam kode sebelumnya, Anda mendapatkan nilai dari kumpulan barang. Kemudian, karena barang hanya menyimpan objek Akun, Anda bisa membuat myAccount mengacu pada nilai baru tersebut.
Java 5. 0 menambahkan generik ke Java. Tapi segera setelah kelahiran Java 5. 0, programmer melihat betapa kikuknya kode untuk obat generik.Lagi pula, Anda bisa menciptakan obat generik dalam obat generik. ArrayList dapat berisi sekelompok array, yang masing-masing bisa berupa ArrayList. Jadi kamu bisa menulis
ArrayListmess = new ArrayList ();
Semua pengulangan dalam deklarasi kekacauan itu membuat programmer menjadi sakit kepala! Untuk menghindari keburukan ini, versi Java 7 dan yang lebih baru memiliki operator berlian , . Operator berlian memberitahu Java untuk menggunakan kembali barang-barang rumit yang Anda sebutkan sebelumnya di deklarasi generik sebelumnya.
Dalam contoh ini, Java mengatakan untuk menggunakan kembali
ArrayListmess = new ArrayList ();
Di Jawa 7 dan yang lebih baru, Anda dapat menulis salah satu dari deklarasi berantakan ini - deklarasi asli dan buruk dengan dua kejadian ArrayList [], atau deklarasi yang disederhanakan (hanya agak menjijikkan) dengan operator berlian dan hanya satu ArrayList [] kejadian.
Ya, kode yang disederhanakan masih rumit. Tapi tanpa pengulangan ArrayList [], kode yang disederhanakan kurang praktis. Operator berlian Java 7 menghilangkan satu kesempatan bagi Anda untuk menyalin sesuatu secara tidak benar dan memiliki kesalahan besar dalam kode Anda.