Komputer, Pemrograman
Java Generics: deskripsi dan metode
Dimulai dengan munculnya bahasa Jawa telah mengalami banyak perubahan, yang tidak diragukan lagi membawa momen positif dalam fungsinya. Salah satu perubahan signifikan adalah pengenalan Java Generik atau generalisasi. Fungsi ini tidak hanya membuat bahasa yang lebih fleksibel dan serbaguna, tetapi juga jauh lebih aman dalam hal membawa jenis data.
Faktanya adalah bahwa sebelum pengenalan obat generik dalam kode generik Java dapat dibuat, tidak hanya dalam hal jenis Obyek referensi. link tersebut dapat ditetapkan objek apapun. Setelah semua, kelas di Jawa adalah ahli waris kelas Object implisit. Namun, pendekatan ini merupakan sumber potensial dari banyak kesalahan yang terkait dengan jenis keamanan dalam konversi jelas sebuah objek dari Objek dengan jenis sasaran. Bila menggunakan generalisasi semua gips dilakukan secara implisit dan otomatis, menghilangkan bahkan potensi kesalahan.
Java Generics: deskripsi dan contoh
Mari kita perhatikan contoh sederhana penerapan generalisasi untuk kelas reguler pada gambar di bawah. Dan kemudian lanjutkan untuk pemeriksaan rinci dari semua seluk-beluk dan nuansa Jawa Generik.
Perhatikan cara di mana deklarasi kelas terjadi Pair. Segera setelah nama kelas, kurung sudut terbuka, yang menunjukkan huruf T. Ini adalah jenis filler, yang dalam proses menciptakan sebuah instance dari kelas ini akan digantikan oleh jenis tertentu. Ini terlihat sebagai berikut: Pair
Catatan: dimulai dengan versi kedelapan dari Jawa, menentukan jenis target ketika mendeklarasikan kurung sudut acuan dalam constructor dapat dibiarkan kosong. Jadi misalnya dapat ditulis ulang seperti di atas: Pair
Ketika kelas dinyatakan sedemikian rupa, maka dalam tubuhnya bukan tipe tertentu dari bidang, link, obyek dikembalikan oleh metode yang dapat Anda gunakan surat itu. Sejak T saat membuat objek kelas diganti dengan jenis tertentu, pertama dan kedua bidang dalam hal ini akan menjadi jenis Integer.
Mengikuti logika argumen dan firstItem secondItem, disebut constructor yang sesuai juga harus dari jenis Integer atau subclass. Jika Anda mencoba untuk mengirimkan tipe data yang berbeda dari apa yang ditentukan saat membuat sebuah objek, compiler tidak akan membiarkan kesalahan ini. Dengan demikian, argumen konstruktor ketika sebuah objek akan sebagai berikut: Pair
Generalized dengan jenis kelas beberapa parameter
Di kelas umum juga dapat mendeklarasikan beberapa parameter dari jenis yang ditetapkan dalam kurung sudut dengan koma. Dirancang ulang oleh kasus kelas Pair disajikan di bawah ini.
Seperti yang Anda lihat, ketika Anda membuat sebuah instance dari kelas ini di kurung sudut harus menunjukkan jumlah yang sama dari jenis sebagai parameter. Jika Anda sudah familiar dengan jenis struktur data sebagai Peta, Anda dapat melihat bahwa ia menggunakan persis prinsip yang sama. Ada, argumen pertama menentukan jenis kunci, dan yang kedua - jenis nilai. Perlu dicatat bahwa jenis ditularkan ketika sebuah argumen objek mungkin tumpang tindih. Sebagai contoh, iklan berikut kelas misalnya Pair adalah mutlak benar: Pair
Beberapa fitur generalisasi
Sebelum pergi lebih jauh, perlu dicatat bahwa compiler Java tidak menciptakan versi yang berbeda dari Pair kelas. Bahkan, dalam proses kompilasi jenis umum semua informasi tersebut dihapus. Sebaliknya, Anda membawa jenis yang tepat, menciptakan sebuah versi khusus dari kelas Pair. Namun, dalam program masih hanya versi generik dari kelas. Proses ini disebut di Jawa Jenis membersihkan Generic.
Catatan poin penting. Link ke versi yang berbeda dari kelas generik java yang sama tidak dapat menunjuk satu dan objek yang sama. Artinya, misalkan kita memiliki dua link: Pair
Pembatasan kelas generik
Hal ini penting untuk mengetahui bahwa generalisasi dapat diterapkan hanya untuk referensi jenis, yaitu untuk melewati parameter generik kelas java argumen harus menjadi tipe kelas. Ini tipe sederhana, seperti, misalnya, ganda atau panjang, tidak dapat ditransfer. Dengan kata lain, baris berikut Pair kelas deklarasi tidak diperbolehkan: Pair
Keterbatasan lain yang serius adalah ketidakmampuan untuk membuat sebuah instance dari jenis parameter. Misalnya, baris berikut akan menyebabkan kesalahan kompilasi: T pertama = new T (). Hal ini jelas, karena Anda tidak tahu sebelumnya apakah argumen lulus kelas penuh atau abstrak, atau bahkan antarmuka. Hal yang sama berlaku untuk menciptakan array.
jenis terbatas
Cukup sering ada situasi ketika itu perlu untuk membatasi daftar jenis yang bisa dilalui sebagai argumen untuk java kelas generik. Mari kita berasumsi bahwa di Pair kelas kami kami ingin merangkum hanya nilai-nilai numerik untuk operasi matematika lebih lanjut pada mereka. Untuk melakukan hal ini kita perlu mendefinisikan batas atas dari jenis parameter. Hal ini diwujudkan dengan cara iklan superclass mewarisi semua argumen berlalu dalam kurung sudut. Ini akan terlihat sebagai berikut: class Pair
Ini adalah penerimaan umum. pembatasan tersebut sering digunakan untuk memberikan parameter jenis kompatibilitas dalam satu dan kelas yang sama. Perhatikan contoh di kelas Pair kami: class Pair
Membatasi "bawah" adalah cara yang persis sama, tapi bukannya kata meluas mengeja kata super. Kelas diklasifikasikan Pair
metode Java generik dan konstruktor
Di Jawa, generalisasi dapat diterapkan tidak hanya untuk kelas, tetapi juga metode. Sebagai contoh, metode generik dapat dinyatakan dalam kelas reguler.
Seperti yang terlihat pada gambar di atas, metode iklan umum bukan masalah besar. Cukup sebelum kembali jenis metode untuk menempatkan kurung sudut dan menentukan jenis parameter di dalamnya.
Jika semuanya dilakukan sama dengan konstruktor:
kurung sudut dalam hal ini diletakkan sebelum nama desainer, karena ia tidak memiliki nilai kembali. Hasil dari kedua program akan:
bilangan bulat
tali
Similar articles
Trending Now