1. فصول عامة
1.1 الأدوية العادية
نسخة الكود كما يلي:
حزمة test.lujianing ؛
/**
* فئة عامة
* param <T>
*/
اختبار الفئة <T> {
خاص t obj ؛
public void 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) ؛
// اختبر العام المزدوج
Test <borted> t2 = اختبار جديد <Souble> () ؛
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 Generics
نسخة الكود كما يلي:
حزمة test.lujianing ؛
استيراد java.util.hashmap ؛
استيراد java.util.map ؛
/**
* تم إنشاؤه بواسطة المسؤول في 14-3-30.
*/
فئة testkv <k ، v> {
الخريطة الخاصة <k ، v> map = new hashmap <k ، v> () ؛
Public Void PUT (K K ، V) {
map.put (k ، v) ؛
}
public v get (k k) {
عودة خريطة. get (k) ؛
}
}
الفئة العامة testfour {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
TestKv <string ، string> t = new testkv <string ، string> () ؛
T.put ("الاسم" ، "Jianing") ؛
system.out.println (t.get ("name")) ؛
TestKv <string ، integer> t2 = new testkv <string ، integer> () ؛
t2.put ("العمر" ، 24) ؛
System.out.println (t2.get ("Age")) ؛
}
}
نتيجة الإخراج:
نسخة الكود كما يلي:
جيانينج
أربعة وعشرون
2. واجهة عامة
نسخة الكود كما يلي:
حزمة test.lujianing ؛
/**
* واجهة عامة
* param <T>
*/
واجهة عامة Testimpl <T> {
public void setValue (t t) ؛
العام t getValue () ؛
}
نتيجة الإخراج:
نسخة الكود كما يلي:
1
مرحبا كلمة
3. طرق عامة
نسخة الكود كما يلي:
حزمة test.lujianing ؛
/**
* فئة الطريقة العامة
*/
فئة TestMethod {
/**
* طرق عامة
*/
العام <T> t getValue (الكائن S ، فئة <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) new double (s.ToString ()) ؛
}
العودة ر ؛
}
}
/**
* فئة اختبار الطريقة العامة
*/
الفئة العامة testthree {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
testMethod t = new 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> Type Type T ، ونوع التقييد الافتراضي يعادل الكائن. على سبيل المثال ، نحتاج إلى الحد من نوع الواجهة الرقمية. ما عليك سوى القيام بذلك: لا يمكن أن يكون هناك اختلاف في الفئة العامة فقط.
5. الأدوية البرية
نسخة الكود كما يلي:
حزمة test.lujianing ؛
استيراد java.util.hashmap ؛
استيراد java.util.map ؛
/**
* الأدوية البرية
*/
الطبقة العامة testfive {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
الخريطة <string ، فئة <؟
map.put ("integer" ، integer.class) ؛
map.put ("double" ، double.class) ؛
لـ (map.entry <string ، class <؟ تمديد الرقم >> الإدخال: map.entryset ()) {
System.out.println ("KEY:" + entrate.getKey () + "value:" + entry.getValue ()) ؛
}
}
}
نتيجة الإخراج:
نسخة الكود كما يلي:
المفتاح: القيمة المزدوجة: فئة java.lang.double
المفتاح: قيمة عدد صحيح: فئة java.lang.integer
مثال بسيط: مثال على 1.1
نسخة الكود كما يلي:
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
// اختبر عدد صحيح عام
اختبار <integer> t1 = اختبار جديد <integer> () ؛
T1.SetValue (5) ؛
متعة (T1) ؛
// اختبر العام المزدوج
Test <borted> t2 = اختبار جديد <Souble> () ؛
T2.SetValue (5.55d) ؛
المرح (T2) ؛
}
متعة الفراغ الثابتة العامة (اختبار <؟> t) {
System.out.println ("Wild Generic" + T.GetValue ()) ؛
}
نتيجة الإخراج:
نسخة الكود كما يلي:
java.lang.integer
الأدوية البرية 5
java.lang.double
الأدوية البرية 5.55
6. ملحق
في الأعياد ، قد تصادف <t> <e> ، وما إلى ذلك ، T و E هي الأحرف الأولى من النوع والعنصر ، على التوالي. يتم استخدام E عمومًا لتمثيل نوع العناصر في نوع المجموعة ، مثل تعريف واجهة القائمة ، قائمة الواجهة العامة <E> تمتد المجموعة <e>. هذه مجرد عادة تسمية ، وليس هناك فرق أساسي بين الاثنين.