1. Kelas generik
1.1 generik normal
Salinan kode adalah sebagai berikut:
Paket tes.lujianing;
/**
* Kelas generik
* @param <t>
*/
tes kelas <t> {
Private t OBJ;
public void setValue (t obj) {
this.obj = obj;
}
public t getValue () {
System.out.println (obj.getClass (). GetName ());
kembalikan obj;
}
}
/**
* Uji kelas generik
*/
testone kelas publik {
public static void main (string [] args) {
// uji integer generik
Tes <Integer> t1 = tes baru <Integer> ();
t1.setValue (5);
Integer i = t1.getValue ();
System.out.println (i);
// uji generik ganda
Tes <mouble> t2 = tes baru <mouble> ();
t2.setValue (5.55d);
Double d = t2.getValue ();
System.out.println (D);
// uji string generik
Tes <string> t3 = tes baru <string> ();
t3.setValue ("Hello World");
String str = t3.getValue ();
System.out.println (str);
}
}
Hasil output:
Salinan kode adalah sebagai berikut:
java.lang.integer
5
java.lang.double
5.55
java.lang.string
halo dunia
1,2 k/v generik
Salinan kode adalah sebagai berikut:
Paket tes.lujianing;
impor java.util.hashmap;
impor java.util.map;
/**
* Dibuat oleh Administrator pada 14-3-30.
*/
kelas testkv <k, v> {
peta pribadi <k, v> peta = hashmap baru <k, v> ();
public void put (k k, v v) {
peta.put (k, v);
}
public v get (k k) {
return map.get (k);
}
}
TestFour kelas publik {
public static void main (string [] args) {
TestKv <string, string> t = new testkv <string, string> ();
t.put ("name", "jianing");
System.out.println (t.get ("name"));
TestKv <string, integer> t2 = testkv baru <string, integer> ();
t2.put ("usia", 24);
System.out.println (t2.get ("usia"));
}
}
Hasil output:
Salinan kode adalah sebagai berikut:
Jianing
Dua Puluh Empat
2. Antarmuka generik
Salinan kode adalah sebagai berikut:
Paket tes.lujianing;
/**
* Antarmuka generik
* @param <t>
*/
Testimpl Antarmuka Publik <T> {
setValue public void (T T);
publik t getValue ();
}
Hasil output:
Salinan kode adalah sebagai berikut:
1
halo kata
3. Metode generik
Salinan kode adalah sebagai berikut:
Paket tes.lujianing;
/**
* Kelas metode generik
*/
kelas testmethod {
/**
* Metode generik
*/
publik <T> t getValue (objek S, kelas <T> clazz) {
System.out.println (clazz.getName ());
T t = null;
if (clazz.getName (). Equals ("java.lang.integer")) {
Double d = double.parsedouble (s.tostring ());
int i = d.intvalue ();
t = (t) bilangan bulat baru (i);
}
if (clazz.getName (). Equals ("java.lang.double")) {
t = (t) double baru (s.tostring ());
}
mengembalikan t;
}
}
/**
* Kelas uji metode generik
*/
Test kelas publik {
public static void main (string [] args) {
TestMethod t = testMethod baru ();
int i = t.getValue ("30.0011", integer.class);
System.out.println (i);
double d = t.getValue ("40.0022", double.class);
System.out.println (D);
}
}
Hasil output:
Salinan kode adalah sebagai berikut:
java.lang.integer
30
java.lang.double
40.0022
4. Batasi obat generik
Dalam contoh di atas, tidak ada batasan pada kisaran tes kelas <T> Tipe Holder T, dan tipe pembatasan default setara dengan objek. Misalnya, kita perlu membatasi T ke tipe antarmuka digital. Lakukan saja ini: Tes Kelas <Tentang Nomor>.
5. Generik liar
Salinan kode adalah sebagai berikut:
Paket tes.lujianing;
impor java.util.hashmap;
impor java.util.map;
/**
* Generik liar
*/
testfive kelas publik {
public static void main (string [] args) {
Peta <string, kelas <?
peta.put ("integer", integer.class);
peta.put ("double", double.class);
untuk (map.entry <string, class <? Extends number >> entri: map.entryset ()) {
System.out.println ("Kunci:" + Entry.getKey () + "Nilai:" + entri.getValue ());
}
}
}
Hasil output:
Salinan kode adalah sebagai berikut:
Kunci: Nilai Ganda: Kelas java.lang.double
Kunci: Nilai Integer: kelas java.lang.integer
Contoh Sederhana: Contoh untuk 1.1
Salinan kode adalah sebagai berikut:
public static void main (string [] args) {
// uji integer generik
Tes <Integer> t1 = tes baru <Integer> ();
t1.setValue (5);
Fun (T1);
// uji generik ganda
Tes <mouble> t2 = tes baru <mouble> ();
t2.setValue (5.55d);
Fun (T2);
}
public static void fun (test <?> t) {
System.out.println ("Wild Generic" + T.GetValue ());
}
Hasil output:
Salinan kode adalah sebagai berikut:
java.lang.integer
Generik Liar 5
java.lang.double
Generik Liar 5.55
6. Suplemen
Dalam obat generik, Anda dapat menemukan <T> <E>, dll. T dan E adalah inisial jenis dan elemen, masing -masing. E umumnya digunakan untuk mewakili jenis elemen dalam jenis koleksi, seperti definisi antarmuka daftar, Daftar Antarmuka Publik <E> memperluas koleksi <E>. Ini hanya kebiasaan penamaan, dan tidak ada perbedaan penting antara keduanya.