
Generik di Jawa dan Implementasinya
Generik di Jawa
Dalam pemrograman Java, generik bahasa diluncurkan di J2SE 5 untuk mengatasi objek yang aman tipe. Ini mendeteksi bug pada waktu kompilasi dimana kode dibuat stabil. Jenis objek apa pun diizinkan untuk disimpan dalam koleksi sebelum pengenalan umum. Sekarang daftar tiktok88 setelah pengenalan umum dalam bahasa pemrograman Java , pemrogram dipaksa untuk menyimpan jenis objek eksplisit.
Manfaat Java Generik
Tiga manfaat mendasar dari penggunaan obat generik diberikan di bawah ini:
1. Sortir-Keamanan
Generik memungkinkan pengecer hanya dari satu jenis objek. Selanjutnya, varietas objek yang sama sekali berbeda biasanya tidak boleh disimpan dalam obat generik.
Objek apa pun diizinkan untuk disimpan tanpa obat generik.
// declaring an inventory with the title dataList
Listing dataList= new ArrayList();
// including integer into the dataList
dataList.add(10);
// including string information into the dataList
dataList.add("10");
Dengan obat generik, kami harus menginformasikan jenis barang yang ingin kami jual ke pengecer.
Mendeklarasikan inventori dengan judul dataList
Listing<Integer> dataList= new ArrayList();
Termasuk integer ke dalam dataList
dataList.add(10);
Termasuk informasi string ke dalam daftar data
dataList.add("10"); // however this assertion offers compile-time error
2. Tidak Ingin Melakukan Sortir Casting
Pengecoran jenis objek seharusnya tidak diperlukan dengan obat generik.
Diperlukan untuk melakukan casting lebih awal dari pengenalan umum.
declaring an inventory with the title dataList
Listing dataList= new ArrayList();
including a component to the dataList
dataList.add("hey");
typecasting
String s = (String) dataList.get(0);
Tidak ada yang namanya keinginan untuk pengecoran jenis objek setelah obat generik.
// declaring an inventory with the title dataList
Listing<String> dataList= new ArrayList<String>();
// including a component to the dataList
dataList.add("hey");
//typecasting shouldn't be required
String s = dataList.get(0);
3. Memeriksa pada Waktu Kompilasi
Poin tidak akan terjadi pada waktu proses karena diperiksa pada waktu kompilasi. Dan sebagai tanggapan atas metode pemrograman yang baik, penanganan kerugian yang dilakukan pada waktu kompilasi jauh lebih baik daripada penanganan yang dilakukan pada waktu proses.
// declaring an inventory with the title dataList
Listing<String> dataList = new ArrayList<String>();
// including a component into the dataList
dataList .add("hey");
// attempt to add an integer within the dataList however this assertion will give compile-time error
dataList .add(32);
Sintaksis:
Generic assortment can be utilized as :
ClassOrInterface<Sort>
Instance:
An instance of how generics are utilized in java is given under:
ArrayList<String>
Contoh Program Generik Java
Kelas ArrayList digunakan pada contoh ini. Namun alih-alih kelas ArrayList, semua kelas kerangka kerja bermacam-macam dapat digunakan, seperti Comparator, HashMap, TreeSet, HashSet, LinkedList, ArrayList, dll.
// importing packages
import java.util.*;
// creating a category with the title GenericsExample
class GenericsExample
// fundamental methodology
public static void fundamental(String args[])
// declaring an inventory with the title dataList to retailer String parts
ArrayList < String > dataList = new ArrayList < String > ();
// including a component into the dataList
dataList.add("hina");
// including a component into the dataList
dataList.add("rina");
// if we attempt to add an integer into the dataList then it is going to give a compile-time error
//dataList.add(32); //compile time error
// accessing aspect from dataList
String s = dataList.get(1); //no want of kind casting
// printing a component of the record
System.out.println("aspect is: " + s);
// for iterating over the dataList parts
Iterator < String > itr = dataList.iterator();
// iterating and printing the weather of the record
whereas (itr.hasNext())
System.out.println(itr.subsequent());
Keluaran
aspect is: rina
hina
rina
Instance Generik Java Memanfaatkan Peta
Dalam hal ini, kami menggunakan peta untuk menunjukkan contoh umum. Peta memungkinkan penyimpanan informasi dalam jenis pasangan kunci-nilai.
// importing packages
import java.util.*;
// creating a category with the title GenericsExample
class GenericsExample
// fundamental methodology
public static void fundamental(String args[])
// declaring a map for storing keys of Integer kind with String values
Map < Integer, String > dataMap = new HashMap < Integer, String > ();
// including some key worth into the dataMap
dataMap.put(3, "seema");
dataMap.put(1, "hina");
dataMap.put(4, "rina");
// utilizing dataMap.entrySet()
Set < Map.Entry < Integer, String >> set = dataMap.entrySet();
// creating an iterator for iterating over the dataMap
Iterator < Map.Entry < Integer, String >> itr = set.iterator();
// iterating for printing each key-value pair of map
whereas (itr.hasNext())
// kind casting shouldn't be required
Map.Entry e = itr.subsequent();
System.out.println(e.getKey() + " " + e.getValue());
Keluaran:
Kelas Generik
Kelas generik adalah kategori yang dapat berunding dengan jenis apa pun. Dan di sini, untuk membuat kelas generik jenis tertentu, kami menggunakan parameter jenis T.
Deklarasi kelas generik jauh seperti deklarasi kelas non-generik, selain itu bagian parameter pengurutan ditulis setelah judul kategori. Parameter 1 atau beberapa jenis diperbolehkan dalam bagian parameter jenis.
Deklarasi kelas generik tampak seperti deklarasi kelas non-generik, selain itu judul kategori diadopsi oleh bagian parameter jenis. Karena sejumlah parameter diterima, maka Varietas berparameter atau kursus berparameter adalah nama lain untuk itu.
Dan contohnya diberikan di bawah untuk menunjukkan penggunaan dan pembuatan kursus umum.
Pembuatan Kelas Generik
class GenericClassExample < T >
T object;
void addElement(T object)
this.object = object;
T get()
return object;
Di sini jenis T menunjukkan bahwa ia dapat berunding dengan jenis apa pun, seperti Worker, String, dan Integer. Jenis yang Anda tentukan untuk kategori tersebut digunakan untuk penyimpanan dan pengambilan informasi.
Implementasi Kelas Generik
Allow us to see an instance for a greater understanding of generic class utilization
// creating a category with the title GenericExample
class GenericExample
// fundamental methodology
public static void fundamental(String args[])
// utilizing the generic class created within the above instance with the Integer kind
GenericClassExample < Integer > m = new GenericClassExample < Integer > ();
// calling addElement for the m
m.addElement(6);
// if we attempt to name addElement with the string kind aspect then it is going to give a compile-time error
//m.addElement("hina"); //Compile time error
System.out.println(m.get());
Keluaran
Metodologi Generik
Sama seperti kelas generik, strategi generik juga dapat dibuat. Dan argumen apa pun dapat diterima oleh metodologi generik. Deklarasi metodologi generik sama seperti metodologi generik, namun cakupan parameter sortir dilarang untuk taktik di mana deklarasi telah dilakukan. Strategi generik diperbolehkan statis dan non-statis.
Izinkan kami memahami metodologi umum Java dengan sebuah contoh. Di sini adalah contoh mencetak cuaca dari sebuah array . Di sini E digunakan untuk mewakili bagian.
// creating a category with the title GenericExample
public class GenericExample
// making a generic methodology for printing the weather of an array
public static < E > void printElements(E[] parts)
// iterating over parts for printing parts of an array
for (E curElement: parts)
System.out.println(curElement);
System.out.println();
// fundamental methodology
public static void fundamental(String args[])
// declaring an array having Integer kind parts
Integer[] arrayOfIntegerElements =
10,
20,
30,
40,
50
;
// declaring an array having character-type parts
Character[] arrayOfCharacterElements =
'J',
'A',
'V',
'A',
'T',
'P',
'O',
'I',
'N',
'T'
;
System.out.println("Printing an parts of an Integer Array");
// calling generic methodology printElements for integer array
printElements(arrayOfIntegerElements);
System.out.println("Printing an parts of an Character Array");
// calling generic methodology printElements for character array
printElements(arrayOfCharacterElements);
Keluaran:
Printing an parts of an Integer Array
10
20
30
40
50
Printing an parts of an Character Array
J
A
V
A
T
P
O
I
N
T
Wildcard di Java Generik
Bagian wildcard dalam obat generik diwakili oleh gambar tanda kueri (?). Dan segala jenis diwakili olehnya. Jika <? extends Quantity> ditulis oleh kami, maka ini menyiratkan Quantity apa pun yang mirip dengan (double, float, dan Integer) kelas kecil. Sekarang metodologi kelas kuantitas dapat dikenal dari salah satu kursus anak-anak. Wildcard dapat digunakan sebagai jenis variabel asli, jenis kembalian, subjek, atau Parameter. Namun, wildcard tidak dapat digunakan sebagai argumen yang baik untuk pemanggilan metodologi generik atau pembuatan acara generik.
Izinkan kami untuk melihat wildcard di Java generik dengan bantuan contoh di bawah ini:
// importing packages
import java.util.*;
// creating an summary class with the title Animal
summary class Animal
// creating an summary methodology with the title eat
summary void eat();
// creating a category with the title Cat which inherits the Animal class
class Cat extends Animal
void eat()
System.out.println("Cat can eat");
// creating a category with the title Canine which inherits the Animal class
class Canine extends Animal
void eat()
System.out.println("Canine can eat");
// creating a category for testing the wildcards of java generics
class GenericsExample
//creating a way by which solely Animal little one courses are accepted
public static void animalEat(Listing << ? extends Animal > lists)
for (Animal a: lists)
//Animal class methodology calling by the occasion of the kid class
a.eat();
// fundamental methodology
public static void fundamental(String args[])
// creating an inventory of kind Cat
Listing < Cat > record = new ArrayList < Cat > ();
record.add(new Cat());
record.add(new Cat());
record.add(new Cat());
// creating an inventory of kind Canine
Listing < Canine > list1 = new ArrayList < Canine > ();
list1.add(new Canine());
list1.add(new Canine());
// calling animalEat for record
animalEat(record);
// calling animalEat for list1
animalEat(list1);
Keluaran:
Cat can eat
Cat can eat
Cat can eat
Canine can eat
Canine can eat
Wildcard Batas Tinggi
Tujuan utama memanfaatkan wildcard batas atas adalah untuk mengurangi batasan variabel. Jenis yang tidak diketahui dibatasi olehnya untuk menjadi jenis atau subtipe tertentu dari jenis tertentu. Higher Bounded Wildcard digunakan dengan menulis gambar tanda kueri, kemudian memperluas kata kunci jika ada kelas dan menerapkan kata kunci untuk antarmuka, setelah itu kata kunci yang lebih tinggi ditulis.
Sintaks Wildcard Tertentu Lebih Tinggi
? extends Sort.
Contoh Wildcard Tertentu Lebih Tinggi
Izinkan kami untuk melihat Wildcard Tertentu Lebih Tinggi dengan sebuah contoh. Di sini, wildcard tertentu yang lebih tinggi digunakan oleh kami untuk penulisan metodologi Listing<Double> dan Listing<Integer>.
// importing packages
import java.util.ArrayList;
// creating a category with the title UpperBoundWildcardExample
public class UpperBoundWildcardExample
// creating a way by utilizing higher bounded wildcards
personal static Double sum(ArrayList << ? extends Quantity > record)
double add = 0.0;
for (Quantity n: record)
add = add + n.doubleValue();
return add;
// fundamental methodology
public static void fundamental(String[] args)
// creating an inventory of integer kind
ArrayList < Integer > list1 = new ArrayList < Integer > ();
// including parts to the list1
list1.add(30);
list1.add(40);
// calling sum methodology for printing sum
System.out.println("Sum is= " + sum(list1));
// creating an inventory of double kind
ArrayList < Double > list2 = new ArrayList < Double > ();
list2.add(10.0);
list2.add(20.0);
// calling sum methodology for printing sum
System.out.println("Sum is= " + sum(list2));
Keluaran:
Sum is= 70.0
Sum is= 30.0
Wildcard tanpa batas
Catatan jenis tidak dikenal ditentukan oleh wildcard tak terbatas seperti Listing<?>.
Contoh Wildcard Tak Terbatas
// importing packages
import java.util.Arrays;
import java.util.Listing;
// creating a category with the title UnboundedWildcardExample
public class UnboundedWildcardExample
// creating a way displayElements by utilizing Unbounded Wildcard
public static void displayElements(Listing << ? > record)
for (Object n: record)
System.out.println(n);
// fundamental methodology
public static void fundamental(String[] args)
// creating an inventory of kind integer
Listing < Integer > list1 = Arrays.asList(6, 7, 8);
System.out.println("printing the values of integer record");
// calling displayElements for list1
displayElements(list1);
// creating an inventory of kind string
Listing < String > list2 = Arrays.asList("six", "seven", "eight");
System.out.println("printing the values of string record");
// calling displayElements for list2
displayElements(list2);
Keluaran:
printing the values of integer record
6
7
8
printing the values of string record
six
seven
eight
Kurangi Wildcard Berbatas
Turunkan Bounded Wildcard digunakan untuk membatasi jenis yang tidak diketahui menjadi jenis tertentu atau supertype dari jenis yang sebenarnya. Batas Bawah Wildcard digunakan dengan menulis gambar tanda kueri diikuti dengan kata kunci luar biasa, lalu menulis yang lebih rendah pasti.
Sintaks Pengurangan Wildcard Tertentu
? tremendous Sort.
Contoh Penurunan Wildcard Tertentu
// importing packages
import java.util.*;
// creating a category with the title LowerBoundWildcardExample
public class LowerBoundWildcardExample
// creating a way by utilizing higher bounded wildcards
personal static void displayElements(Listing << ? tremendous Integer > record)
for (Object n: record)
System.out.println(n);
// fundamental methodology
public static void fundamental(String[] args)
// creating an inventory of kind integer
Listing < Integer > list1 = Arrays.asList(6, 7, 8);
System.out.println("printing the values of integer record");
// calling displayElements for list1
displayElements(list1);
// creating an inventory of kind string
Listing < Quantity > list2 = Arrays.asList(8.0, 9.8, 7.6);
System.out.println("printing the values of string record");
// calling displayElements for list2
displayElements(list2);
Keluaran:
printing the values of integer record
6
7
8
printing the values of string record
8.0
9.8
7.6
Kesimpulan
- Setelah pengenalan generik dalam bahasa pemrograman Java, pemrogram dipaksa untuk menyimpan varietas objek eksplisit.
- Sort security, No need for kind casting, dan Checking pada waktu kompilasi adalah Tiga manfaat mendasar menggunakan obat generik.
- Kelas generik adalah kategori yang dapat berunding dengan jenis apa pun.
- Sama seperti kelas generik, strategi generik juga dapat dibuat. Dan argumen apa pun dapat diterima oleh metodologi generik.
- Bagian wildcard dalam obat generik diwakili oleh gambar tanda kueri (?).
- Higher Bounded, Reduce Bounded, dan Unbounded adalah tiga jenis wildcard di Java generik.