KomputerPengaturcaraan

Java Generik: penerangan dan kaedah

Bermula dengan kemunculan bahasa Jawa telah melalui banyak perubahan, yang sudah pasti membawa detik-detik yang positif dalam fungsinya. Salah satu perubahan yang ketara adalah pengenalan Java Generik atau generalisasi. fungsi ini bukan sahaja menjadikan bahasa yang lebih fleksibel dan serba boleh, tetapi juga lebih selamat dari segi membawa jenis data.

Hakikatnya adalah bahawa sebelum pengenalan generik kod generik Java boleh diwujudkan, bukan sahaja dari segi Objek rujukan jenis. Pautan tersebut boleh diberikan apa-apa objek. Lagipun, kelas di Jawa yang tersirat waris kelas Objek. Walau bagaimanapun, pendekatan ini adalah sumber yang berpotensi untuk banyak kesilapan yang berkaitan dengan jenis sekuriti dalam penukaran jelas objek dari Objek jenis sasaran. Apabila menggunakan generalisasi semua acuan dilakukan secara tersirat dan secara automatik, menghapuskan walaupun potensi untuk kesilapan.

Java Generik: huraian dan contoh

Mari kita mempertimbangkan contoh yang mudah untuk permohonan generalisasi ke kelas biasa dalam rajah di bawah. Dan kemudian meneruskan untuk pemeriksaan terperinci semua perihal tersirat dan nuansa Jawa Generik.

Memberi perhatian kepada cara di mana pengisytiharan kelas berlaku Pair. Sejurus selepas nama kelas, kurungan sudut terbuka, yang menunjukkan huruf T. Ia adalah sejenis pengisi, yang dalam proses mewujudkan contoh kelas ini akan digantikan dengan jenis tertentu. Ia kelihatan seperti berikut: Pasangan obj = Baru Pasangan (). Perlu diingatkan bahawa bukan T boleh menentukan apa-apa surat, tetapi, sebagai peraturan, menggunakan T, V atau E.

Nota: bermula dengan versi kelapan Java, dengan menyatakan jenis sasaran apabila mengisytiharkan kurungan sudut rujukan dalam pembina boleh dibiarkan kosong. Jadi contoh boleh ditulis semula seperti di atas: Pasangan obj = Baru Pasangan <> ().

Apabila kelas diisytiharkan sedemikian rupa, maka dalam tubuhnya bukannya jenis tertentu bidang, pautan, objek dikembalikan oleh kaedah yang anda boleh menggunakan surat itu. Sejak T apabila mewujudkan kelas objek digantikan dengan jenis tertentu, bidang pertama dan kedua dalam kes ini akan menjadi jenis Integer itu.

Berikutan logik hujah-hujah dan firstItem secondItem, yang disebut pembina yang sesuai juga mestilah jenis Integer atau subkelas. Jika anda cuba untuk menghantar jenis data yang berbeza daripada apa yang dinyatakan semasa membuat objek, pengkompil tidak akan membiarkan kesilapan ini. Oleh itu, hujah-hujah pembina apabila objek adalah seperti berikut: Pasangan obj = Baru Pasangan <> (baru Integer (1), baru Integer (2)). Begitu juga dengan hujah-hujah dan kaedah setFirst setSecond. Dan seperti yang anda mungkin telah meneka, kaedah getFirst getSecond dan akan mengembalikan nilai jenis Integer.

Umum dengan beberapa parameter jenis kelas

Dalam kelas umum juga boleh mengisytiharkan pelbagai parameter jenis yang dinyatakan dalam kurungan sudut dengan koma. Direka semula dengan satu kes Pasangan kelas dibentangkan di bawah.

Seperti yang anda lihat, apabila anda membuat contoh kelas ini dalam kurungan sudut harus menunjukkan jumlah yang sama jenis sebagai parameter. Jika anda biasa dengan jenis struktur data seperti Peta, anda boleh melihat bahawa ia menggunakan sebenarnya prinsip yang sama. Di sana, hujah pertama menetapkan jenis utama, dan kedua - jenis nilai. Harus diingat bahawa jenis dihantar apabila hujah objek boleh bertindih. Sebagai contoh, iklan berikut Pasangan kelas contoh sememangnya betul: Pasangan obj.

Beberapa ciri generalisasi

Sebelum pergi lagi, ia harus diperhatikan bahawa pengkompil Java tidak mewujudkan pelbagai versi Pasangan kelas. Malah, dalam proses menyusun jenis umum semua maklumat yang dipadamkan. Sebaliknya, anda membawa jenis yang sesuai, mewujudkan versi khas kelas Pasangan itu. Walau bagaimanapun, dalam program ini masih hanya versi generik kelas. Proses ini dipanggil di Jawa pembersihan jenis Generik.

Ambil perhatian satu titik penting. Pautan ke versi kelas generik java yang sama tidak boleh menunjukkan satu objek yang sama. Yang, katakan kita mempunyai dua pautan: Pasangan obj1 dan Pasangan obj2. Oleh itu, selaras obj1 = obj2 ralat. Walaupun kedua-dua pembolehubah adalah jenis Pasangan , objek yang mereka rujuk, adalah berbeza. Ini adalah contoh utama daripada jenis keselamatan di Jawa Generik.

Sekatan ke atas kelas generik

Ia adalah penting untuk mengetahui bahawa generalisasi boleh digunakan hanya untuk rujukan jenis, iaitu untuk menghantar parameter generik java hujah kelas perlu menjadi jenis kelas. Jenis-jenis yang mudah, seperti, misalnya, double atau panjang, tidak boleh dipindahkan. Dalam erti kata lain, garis berikut Pasangan pengisytiharan kelas tidak dibenarkan: Pasangan obj. Walau bagaimanapun, had ini bukanlah satu masalah yang serius, kerana ada kelas Java pembungkus yang sepadan untuk setiap jenis primitif. Sebenarnya, jika Pasangan kelas yang anda mahu untuk merangkumi integer dan Boolean nilai avtoupakovka melakukan segala-galanya untuk anda: Pasangan obj = Baru Pasangan <> (25, benar).

Satu lagi had yang serius adalah ketidakupayaan untuk mewujudkan satu contoh jenis parameter. Sebagai contoh, baris berikut akan menyebabkan ralat kompilasi: T pertama = T baru (). Ini adalah jelas, kerana anda tidak tahu terlebih dahulu sama ada hujah meluluskan kelas penuh atau abstrak, atau antara muka. Begitu juga dengan mewujudkan tatasusunan.

jenis terhad

Selalunya terdapat situasi apabila ia adalah perlu untuk menghadkan senarai jenis yang boleh diluluskan sebagai hujah ke Jawa kelas generik. Biarlah kita menganggap bahawa dalam Pair kelas kami, kami mahu untuk merangkumi hanya nilai berangka bagi operasi matematik lanjut mengenai mereka. Untuk melakukan ini kita perlu menentukan had atas jenis parameter. Ia direalisasikan melalui suatu iklan superclass mewarisi semua hujah-hujah yang diluluskan dalam kurungan sudut. Ia akan kelihatan seperti berikut: Kelas Pasangan . Dengan cara ini, pengkompil mendapati bahawa bukan parameter T boleh digantikan atau kelas Bilangan atau salah satu daripada subkelasnya.

Ini adalah satu majlis yang sama. apa-apa sekatan yang sering digunakan untuk menyediakan parameter jenis keserasian dalam satu kelas yang sama. Pertimbangkan contoh dalam kelas Pair kami: Kelas Pasangan . Di sini kita memberitahu pengkompil bahawa jenis T boleh sewenang-wenangnya, dan jenis V mesti sama ada T jenis atau salah satu daripada subkelasnya.

Mengehadkan "bawah" adalah dengan cara yang sama, tetapi bukan dengan perkataan meliputi mengeja perkataan super. Bahawa kelas diklasifikasikan Pasangan mengatakan bahawa bukan T boleh digantikan atau ArrayList, atau mana-mana kelas atau antara muka yang ia mewarisi.

kaedah Java generik dan pengeluar

Di Jawa, generalisasi boleh tidak digunakan hanya untuk kelas-kelas, tetapi juga kaedah. Sebagai contoh, kaedah generik boleh diisytiharkan di dalam kelas biasa.

Seperti yang dapat dilihat dalam rajah di atas, kaedah iklan umum yang ada masalah besar. Mencukupi sebelum jenis pulangan kaedah untuk meletakkan kurungan sudut dan menentukan parameter jenis di dalamnya.

Jika segala-galanya dilakukan sama dengan pembina:

tanda kurung sudut dalam kes ini diletakkan di hadapan nama pereka bentuk, kerana dia tidak mempunyai nilai pulangan. Hasil daripada kedua-dua program akan:

integer

string

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ms.delachieve.com. Theme powered by WordPress.