Dalam tutorial ini, kita akan belajar tentang Java Generics, bagaimana membuat kelas dan kaedah generik dan kelebihannya dengan bantuan contoh.
Java Generics membolehkan kita membuat satu kelas, antara muka, dan metode yang dapat digunakan dengan berbagai jenis data (objek).
Ini membantu kami menggunakan semula kod kami.
Nota : Generik tidak berfungsi dengan jenis primitif ( int
, float
, char
, dan lain-lain).
Kelas Generik Java
Kita boleh membuat kelas yang boleh digunakan dengan jenis data apa pun. Kelas sedemikian dikenali sebagai Kelas Generik.
Inilah cara kita membuat kelas generik di Java:
Contoh: Buat Kelas Generik
class Main ( public static void main(String() args) ( // initialize generic class // with Integer data GenericsClass intObj = new GenericsClass(5); System.out.println("Generic Class returns: " + intObj.getData()); // initialize generic class // with String data GenericsClass stringObj = new GenericsClass("Java Programming"); System.out.println("Generic Class returns: " + stringObj.getData()); ) ) // create a generics class class GenericsClass ( // variable of T type private T data; public GenericsClass(T data) ( this.data = data; ) // method that return T type variable public T getData() ( return this.data; ) )
Pengeluaran
Pengembalian Kelas Generik: 5 pulangan Kelas Generik: Pengaturcaraan Java
Dalam contoh di atas, kami telah membuat kelas generik bernama GenericsClass. Kelas ini boleh digunakan untuk bekerja dengan sebarang jenis data.
class GenericsClass (… )
Di sini, T yang digunakan di dalam kurungan sudut menunjukkan parameter jenis . Di dalam
Main
kelas, kami telah membuat dua objek GenericsClass
- intObj - Di sini, parameter jenis T digantikan oleh
Integer
. Sekarang, GenericsClass berfungsi dengan data integer. - stringObj - Di sini, parameter jenis T digantikan oleh
String
. Sekarang, GenericsClass berfungsi dengan data rentetan.
Kaedah Generik Java
Sama dengan kelas generik, kita juga dapat membuat kaedah yang dapat digunakan dengan semua jenis data. Kelas sedemikian dikenali sebagai Kaedah Generik.
Inilah cara kita membuat kelas generik di Java:
Contoh: Buat Kaedah Generik
class Main ( public static void main(String() args) ( // initialize the class with Integer data DemoClass demo = new DemoClass(); // generics method working with String demo.genericsMethod("Java Programming"); // generics method working with integer demo.genericsMethod(25); ) ) class DemoClass ( // creae a generics method public void genericsMethod(T data) ( System.out.println("Generics Method:"); System.out.println("Data Passed: " + data); ) )
Pengeluaran
Kaedah Generik: Data Lulus: Pengaturcaraan Java Kaedah Generik: Data Lulus: 25
Dalam contoh di atas, kami telah membuat kaedah generik bernama genericsM Method.
public void genericMethod(T data) (… )
Di sini, parameter jenis dimasukkan selepas pengubah
public
dan sebelum jenis pengembalian void
.
Kita boleh memanggil kaedah generik dengan meletakkan jenis sebenar dan
di dalam kurungan sebelum nama kaedah.
demo.genericMethod("Java Programming"); demo.genericMethod(25);
Catatan : Kita boleh memanggil kaedah generik tanpa memasukkan parameter jenis. Sebagai contoh,
demo.genericsMethod("Java Programming");
Dalam kes ini, penyusun dapat memadankan parameter jenis berdasarkan nilai yang diteruskan ke kaedah tersebut.
Jenis Terikat
Secara umum, parameter jenis boleh menerima sebarang jenis data (kecuali jenis primitif).
Namun, jika kita hanya ingin menggunakan generik untuk beberapa jenis tertentu (seperti menerima data jenis nombor) saja, maka kita dapat menggunakan jenis terikat.
Sekiranya jenis terikat, kami menggunakan extends
kata kunci. Sebagai contoh,
Ini bermaksud T hanya dapat menerima data yang merupakan subtipe A.
Contoh: Jenis Terikat
class GenericsClass ( public void display() ( System.out.println("This is a bounded type generics class."); ) ) class Main ( public static void main(String() args) ( // create an object of GenericsClass GenericsClass obj = new GenericsClass(); ) )
Dalam contoh di atas, kami telah membuat kelas bernama GenericsClass. Perhatikan ungkapan, perhatikan ungkapan
Di sini, GenericsClass dibuat dengan jenis terikat. Ini cara GenericsClass hanya boleh bekerja dengan jenis data yang adalah anak-anak Number
( Integer
, Double
, dan sebagainya).
Walau bagaimanapun, kami telah membuat objek kelas generik dengan String
. Dalam kes ini, kita akan mendapat ralat berikut.
GenericsClass obj = GenericsClass baru (); Sebab: pemboleh ubah inferensi T mempunyai batasan persamaan batas yang tidak serasi: Rentetan batas bawah: Nombor di mana T adalah pemboleh ubah jenis: T meluas Nombor yang dinyatakan dalam kelas GenericsClass
Kelebihan Generik Java
1. Kegunaan Kegunaan Semula
Dengan bantuan generik di Java, kita dapat menulis kod yang akan berfungsi dengan pelbagai jenis data. Sebagai contoh,
public void genericsMethod(T data) (… )
Di sini, kami telah membuat kaedah generik. Kaedah yang sama ini dapat digunakan untuk melakukan operasi pada data bilangan bulat, data rentetan, dan sebagainya.
2. Pemeriksaan Jenis masa kompilasi
Yang jenis parameter generik menyediakan maklumat mengenai jenis data yang digunakan dalam kod generik itu. Sebagai contoh,
// using Generics GenericsClass list = new GenericsClass();
Di sini, kita tahu bahawa GenericsClass hanya berfungsi dengan Integer
data.
Sekarang, jika kita cuba menyampaikan data selain Integer ke kelas ini, program akan menghasilkan ralat pada waktu kompilasi.
3. Digunakan dengan Koleksi
Kerangka koleksi menggunakan konsep generik di Jawa. Sebagai contoh,
// creating a string type ArrayList ArrayList list1 = new ArrayList(); // creating a integer type ArrayList ArrayList list2 = new ArrayList();
Dalam contoh di atas, kami telah menggunakan kelas ArrayList yang sama untuk bekerja dengan pelbagai jenis data.
Sama dengan ArrayList
, koleksi lain ( LinkedList
, Queue
, Maps
, dan sebagainya) juga generik di Jawa.