Video: Learn Python - Full Course for Beginners [Tutorial] 2024
Salah satu matlamat reka bentuk asli untuk Java adalah untuk menjaga bahasa semudah mungkin. Pemaju bahasa mengambil beberapa ciri yang tidak rumit dari C ++ dan melemparkannya ke luar tingkap. Hasilnya adalah bahasa yang elegan dan anggun. Sesetengah orang berkata bahasa itu terlalu ramping.
Jadi selepas beberapa tahun perbincangan dan pertengkaran, Java menjadi lebih rumit. Pada tahun 2004, Jawa mempunyai jenis enum, dipertingkatkan untuk gelung, import statik, dan beberapa ciri baru yang menarik. Tetapi yang paling dibincangkan mengenai ciri baru ialah pengenalan generik.
ArrayList people = new ArrayList ();
Penggunaan apa-apa seperti baru di Java 5. 0. Dalam Java gaya lama, anda akan menulis
ArrayList people = new ArrayList ();
Pada masa itu, ArrayList boleh menyimpan hampir apa sahaja yang anda mahu dimasukkan ke dalamnya - nombor, Akaun, Bilik, String … apa-apa. Kelas ArrayList sangat serba boleh, tetapi dengan kepelbagaian ini datang beberapa sakit kepala. Jika anda boleh meletakkan apa-apa ke dalam ArrayList, anda tidak dapat dengan mudah meramalkan apa yang anda akan keluar dari ArrayList.
Khususnya, anda tidak dapat dengan mudah menulis kod yang menganggap anda telah menyimpan jenis nilai tertentu dalam ArrayList. Berikut adalah contoh:
ArrayList things = new ArrayList (); perkara-perkara. tambah (Akaun baru ()); Akaun myAccount = perkara. dapatkan (0); // TIDAK MENGGUNAKAN INI. KOD YANG BURUK.
Dalam baris ketiga, panggilan untuk mendapatkan (0) merebut nilai terawal dalam koleksi barang. Panggilan untuk mendapatkan (0) baik-baik saja, tetapi pengkomputer mencetuskan tugasan percubaan ke myAccount. Anda mendapat mesej di baris ketiga yang mengatakan bahawa apa sahaja yang anda dapat dari senarai perkara tidak boleh dimasukkan ke dalam pembolehubah myAccount.
Anda dapat mesej ini kerana, pada masa pengkompil mencapai baris ketiga, ia telah lupa bahawa item yang ditambah pada baris kedua adalah jenis Akaun!
Pengenalan generik membetulkan masalah ini:
ArrayList things = new ArrayList (); perkara-perkara. tambah (Akaun baru ()); Akaun myAccount = perkara. dapatkan (0); // GUNAKAN INSTEAD KOD INI. KOD YANG BAIK.
Menambah di dua tempat memberitahu pengkompil bahawa perkara-perkara menyimpan akaun Contoh - tidak ada lagi. Oleh itu, dalam baris ketiga dalam kod sebelumnya, anda mendapat nilai dari koleksi benda. Kemudian, kerana perkara menyimpan hanya objek Akaun, anda boleh membuat myAccount merujuk kepada nilai baru itu.
Java 5. 0 menambah generik ke Java. Tetapi tidak lama selepas kelahiran Jawa 5. 0, pengaturcara melihat bagaimana kekok itu kod untuk generik boleh.Lagipun, anda boleh membuat generik dalam generik. ArrayList boleh mengandungi banyak array, masing-masing yang boleh menjadi ArrayList. Jadi anda boleh menulis
ArrayListmess = new ArrayList ();
Semua pengulangan dalam perisytiharan huru-hara ini memberikan pengaturcara sakit kepala! Untuk mengelakkan keburukan ini, versi Java 7 dan versi terkini mempunyai operator 999 berlian , . Pengendali berlian memberitahu Java untuk menggunakan semula apa sahaja perkara yang tidak rumit yang anda masukkan di bahagian sebelumnya dari perisytiharan generik.
Dalam contoh ini, memberitahu Java untuk menggunakan semula
ArrayListmess = new ArrayList ();
Di Jawa 7 dan seterusnya, anda boleh menulis salah satu pengisytiharan berunsur ini - perisytiharan asal, jahat dengan dua kejadian ArrayList [], atau pernyataan yang diperkemas (hanya sedikit jahat) dengan operator berlian dan hanya satu ArrayList [] kejadian.
Ya, kod diperkemas masih rumit. Tetapi tanpa semua pengulangan ArrayList [], kod diperkemas kurang rumit. Pengendali berlian Java 7 mengambil satu peluang untuk anda menyalin sesuatu dengan tidak betul dan mempunyai ralat besar dalam kod anda.