دروس الوحدة (2/2)
الأدوية العامة في جافا
تم تقديم الأنواع العامة (الأنواع العامة) في Java للسماح للفئات والواجهات والأساليب بالعمل على أنواع مختلفة كمعلمات. وهذا يضمن سلامة نوع وقت الترجمة ويتجنب القوالب الصريحة باهظة الثمن في وقت التشغيل.
فئات عامة
يتم تعريف الفئة العامة باستخدام الأقواس الزاوية <T> حيث يعمل T كعنصر نائب للنوع الذي سيتم تحديده عند إنشاء مثيل للفئة.
public class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}عند إنشاء كائن Box، نحدد النوع الفعلي:
Box<Integer> integerBox = new Box<>();
integerBox.setContent(123);
int value = integerBox.getContent(); // No cast needed!طرق عامة
يمكنك تحديد طريقة عامة واحدة يمكنها قبول معلمات نوع مختلفة. يتم وضع معلمة النوع قبل نوع الإرجاع للطريقة.
public static <E> void printArray(E[] elements) {
for (E element : elements) {
System.out.println(element);
}
}أحرف البدل والأنواع المحددة
يمكننا تقييد الأنواع المقبولة بواسطة عام باستخدام الكلمة الأساسية extends (الحد الأعلى) لقبول نوع معين أو فئاته الفرعية.
public static <T extends Number> void processNumber(T number) {
// Accepts Integer, Double, Float, etc.
System.out.println(number.doubleValue());
}جربه بنفسك
أكمل مربع الفئة العامة عن طريق تحديد getValue() getter الذي يُرجع T وsetter setValue(T value) الذي يعين قيمة المتغير الخاص.
إظهار التلميح
اكتب الطرق بالتوقيع الصحيح باستخدام معلمة النوع العامة `T`.
الحل متاح بعد 3 من المحاولات
قم بإنشاء طريقة عامة ثابتة printArray تأخذ مصفوفة من النوع T[] مصفوفة مسماة وتطبع كل عنصر باستخدام حلقة for-each.
إظهار التلميح
يجب وضع معلمة النوع `<T>` مباشرة بعد `static` وقبل نوع الإرجاع `void`.
الحل متاح بعد 3 من المحاولات
قم بإنشاء فئة ثابتة StringContainer تقوم بتنفيذ واجهة الحاوية ذات المعلمات باستخدام String. حدد المُنشئ الذي يأخذ معلمة سلسلة وقم بتنفيذ طريقة getItem().
إظهار التلميح
استبدل النوع العام `T` بـ `String` في توقيع الفئة وفي نوع الإرجاع لـ `getItem()`.
الحل متاح بعد 3 من المحاولات