1. ชั้นเรียนทั่วไป
1.1 ยาสามัญปกติ
การคัดลอกรหัสมีดังนี้:
การทดสอบแพ็คเกจ lujianing;
-
* คลาสทั่วไป
* @param <t>
-
การทดสอบคลาส <t> {
ส่วนตัว t obj;
โมฆะสาธารณะ setValue (t obj) {
this.obj = obj;
-
สาธารณะ t getValue () {
System.out.println (obj.getClass (). getName ());
คืน OBJ;
-
-
-
* ทดสอบคลาสทั่วไป
-
Testone ชั้นเรียนสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
// ทดสอบจำนวนเต็มทั่วไป
ทดสอบ <integer> t1 = การทดสอบใหม่ <integer> ();
T1.SetValue (5);
จำนวนเต็ม i = t1.getValue ();
System.out.println (i);
// ทดสอบ Double Generic
ทดสอบ <bould> t2 = การทดสอบใหม่ <bould> ();
T2.SetValue (5.55D);
double d = t2.getValue ();
System.out.println (D);
// ทดสอบสตริงทั่วไป
ทดสอบ <String> t3 = การทดสอบใหม่ <String> ();
T3.setValue ("Hello World");
string str = t3.getValue ();
System.out.println (str);
-
-
ผลลัพธ์ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
java.lang.integer
5
java.lang.double
5.55
java.lang.string
สวัสดีโลก
1.2 K/V ทั่วไป
การคัดลอกรหัสมีดังนี้:
การทดสอบแพ็คเกจ lujianing;
นำเข้า java.util.hashmap;
นำเข้า java.util.map;
-
* สร้างโดยผู้ดูแลระบบในวันที่ 14-3-30
-
คลาส testkv <k, v> {
แผนที่ส่วนตัว <k, v> map = new hashmap <k, v> ();
โมฆะสาธารณะใส่ (k k, v v) {
map.put (k, v);
-
สาธารณะ v รับ (k k) {
กลับแผนที่. get (k);
-
-
Public Class TestFour {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
testkv <string, string> t = new testkv <string, string> ();
t.put ("ชื่อ", "Jianing");
System.out.println (t.get ("ชื่อ"));
testkv <สตริง, จำนวนเต็ม> t2 = ใหม่ testkv <สตริง, จำนวนเต็ม> ();
t2.put ("อายุ", 24);
System.out.println (t2.get ("อายุ"));
-
-
ผลลัพธ์ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
การเจียนิง
ยี่สิบสี่
2. อินเทอร์เฟซทั่วไป
การคัดลอกรหัสมีดังนี้:
การทดสอบแพ็คเกจ lujianing;
-
* อินเทอร์เฟซทั่วไป
* @param <t>
-
Testimpl Public Interface <T> {
โมฆะสาธารณะ setValue (T T);
สาธารณะ t getValue ();
-
ผลลัพธ์ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
1
สวัสดี Word
3. วิธีการทั่วไป
การคัดลอกรหัสมีดังนี้:
การทดสอบแพ็คเกจ lujianing;
-
* คลาสวิธีทั่วไป
-
คลาส testmethod {
-
* วิธีการทั่วไป
-
สาธารณะ <t> t getValue (Object S, Class <t> Clazz) {
System.out.println (clazz.getName ());
t t = null;
if (clazz.getName (). เท่ากับ ("java.lang.integer")) {
double d = double.parsedouble (s.toString ());
int i = d.intvalue ();
t = (t) จำนวนเต็มใหม่ (i);
-
if (clazz.getName (). เท่ากับ ("java.lang.double")) {
t = (t) ใหม่สองครั้ง (s.toString ());
-
กลับ t;
-
-
-
* คลาสทดสอบวิธีทั่วไป
-
ชั้นเรียนสาธารณะ testthree {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
testMethod t = testMethod ใหม่ ();
int i = t.getValue ("30.0011", Integer.class);
System.out.println (i);
double d = t.getValue ("40.0022", double.class);
System.out.println (D);
-
-
ผลลัพธ์ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
java.lang.integer
30
java.lang.double
40.0022
4. จำกัด ยาชื่อสามัญ
ในตัวอย่างข้างต้นไม่มีการ จำกัด ช่วงของการทดสอบคลาส <t> ตัวยึดประเภท t และประเภทการ จำกัด เริ่มต้นเทียบเท่ากับวัตถุ ตัวอย่างเช่นเราจำเป็นต้อง จำกัด t เข้ากับประเภทอินเทอร์เฟซดิจิตอล เพียงทำสิ่งนี้: การทดสอบคลาส <T ขยายหมายเลข>
5. ยาสามัญป่า
การคัดลอกรหัสมีดังนี้:
การทดสอบแพ็คเกจ lujianing;
นำเข้า java.util.hashmap;
นำเข้า java.util.map;
-
* ยาสามัญป่า
-
TestFive ชั้นเรียนสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
MAP <String, Class <?
map.put ("จำนวนเต็ม", integer.class);
map.put ("double", double.class);
สำหรับ (map.entry <string, class <? ขยายหมายเลข >> รายการ: map.entryset ()) {
System.out.println ("คีย์:" + entry.getKey () + "ค่า:" + entry.getValue ());
-
-
-
ผลลัพธ์ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
คีย์: ค่าคู่: คลาส java.lang.double
คีย์: ค่าจำนวนเต็ม: คลาส java.lang.integer
ตัวอย่างง่ายๆ: ตัวอย่างสำหรับ 1.1
การคัดลอกรหัสมีดังนี้:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
// ทดสอบทั่วไปจำนวนเต็ม
ทดสอบ <integer> t1 = การทดสอบใหม่ <integer> ();
T1.SetValue (5);
สนุก (T1);
// ทดสอบ Double Generic
ทดสอบ <bould> t2 = การทดสอบใหม่ <bould> ();
T2.SetValue (5.55D);
สนุก (T2);
-
ความสนุกแบบคงที่สาธารณะ (ทดสอบ <?> t) {
System.out.println ("wild generic" + t.getValue ());
-
ผลลัพธ์ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
java.lang.integer
Wild Generics 5
java.lang.double
Wild Generics 5.55
6. อาหารเสริม
ในนายพลคุณอาจพบ <t> <e> ฯลฯ T และ E เป็นชื่อย่อของประเภทและองค์ประกอบตามลำดับ โดยทั่วไปแล้ว E ใช้เพื่อแสดงประเภทขององค์ประกอบในประเภทการรวบรวมเช่นคำจำกัดความของอินเตอร์เฟสรายการรายการอินเตอร์เฟสสาธารณะ <E> ขยายการรวบรวม <E> นี่เป็นเพียงนิสัยการตั้งชื่อและไม่มีความแตกต่างที่สำคัญระหว่างทั้งสอง