أساسيات Generics (T والاستدلال)
تعلّم معلمات النوع العامة T ، وسبب توفيرها أمانًا أثناء الترجمة، وكيف يستدل عامل diamond على الأنواع.
أساسيات Generics (T والاستدلال) درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 3 دروس في المجموع.
لماذا نستخدم Generics؟
تضيف Generics الأنواع إلى الحاويات والأدوات، ما يتيح للمصرّف حمايتكم. الفوائد:
- أمان الأنواع — لا يحدث خلط غير مقصود بين الأنواع.
- لا حاجة إلى التحويلات الصريحة — شفرة أوضح.
- قابلة لإعادة الاستخدام — تعمل فئة واحدة مع أنواع عديدة.
ما المقصود بـ T؟
T (معامل النوع) عنصر نائب لنوع فعلي. عند كتابة Box<String>، يتعامل المصرّف مع T على أنه String داخل هذا الاستخدام.
الشفرة: Box<T>
Box<T>: عند إعطاء T النوع String، لا تُقبل إلا قيم من نوع String. ويؤدي استخدام نوع خاطئ إلى خطأ وقت الترجمة، فلا تحدث مفاجآت وقت التشغيل.
public class Main {
// A tiny generic container
static class Box<T> {
private T value;
void set(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
Box<String> bs = new Box<String>(); // T becomes String
bs.set("hello");
System.out.println(bs.get()); // no cast needed
// Box<Integer> bi = new Box<Integer>();
// bi.set("oops"); // would not compile: String is not Integer
}
}
الشفرة: استنتاج النوع باستخدام diamond
باستخدام <> (diamond)، يستنتج المصرّف النوع الموجود في الجهة اليمنى. وإذا لم يتوافق مع النوع الموجود في الجهة اليسرى، تفشل الترجمة، مما يوفّر أمانًا إضافيًا.
public class Main {
static class Box<T> {
private T value;
Box() {}
Box(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
// Type on the left, diamond on the right — compiler infers T
Box<Integer> a = new Box<>(123);
Box<String> b = new Box<>("hi");
System.out.println(a.get() + 1); // 124
System.out.println(b.get().toUpperCase());
}
}
معاملات الأنواع المقيّدة
الحدود: تتطلب بعض الدوال العامة قدرةً مثل Comparable. فمثلًا، تعني <T extends Comparable<T>> أن النوع T يجب أن يكون قابلًا للمقارنة.
الشفرة: دالة عامة مقيّدة
دالة عامة: <T extends Comparable<T>>. يتوافق Integer وString لأن كليهما يطبّق Comparable.
public class Main {
// Generic method: works for any Comparable type
static <T extends Comparable<T>> T min(T a, T b) {
return (a.compareTo(b) <= 0) ? a : b;
}
public static void main(String[] args) {
System.out.println(min(3, 7)); // Integer
System.out.println(min("apple", "banana")); // String (lexicographic)
}
}
تحقق من أساسيات Generics
تحقق سريع: ما الفائدة الرئيسية من استخدام Generics مثل Box<String>؟
مراجعة
مراجعة: T عنصر نائب، ويُستنتج نوعه باستخدام diamond. وتجعل الحدود (extends Comparable) الدوال العامة آمنة وقوية.
الأسئلة الشائعة
هل درس «أساسيات Generics (T والاستدلال)» مجاني؟
نعم — نص درس «أساسيات Generics (T والاستدلال)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 3 دروس في المجموع.
ماذا ستتعلم في «أساسيات Generics (T والاستدلال)»؟
تعلّم معلمات النوع العامة T ، وسبب توفيرها أمانًا أثناء الترجمة، وكيف يستدل عامل diamond على الأنواع. تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «أساسيات Generics (T والاستدلال)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الواجهات عمليًا
- أساسيات Generics (T والاستدلال)
- الدوال والفئات العامة