اذهب إلى المحتوى
  • 0

ما هو مفهوم Generics؟

خالد مرتضى

السؤال

Recommended Posts

  • 0

كلمة generic مشتقة من كلمة general  بمعني "العمومية" بمعني أن تجعل الكائن أو الدالة لديك تقبل أنواع عامة من البيانات وليست أنواع محددة , سيتوضح لك الأمر من الأمثلة القادمة:

إفترض أن لدينا نوع من هياكل البيانات وهو عبارة عن قائمة, إن أردنا إنشائها بدون ال generics نحتاج إلى إضافة دوال بهذا الشكل حتى تكون قادرة على التعامل مع مختلف العناصر

public int insertElement(int element){
this.list.push(element);

}
public double insertElement(double element){
this.list.push(element);

}
public float insertElement(float element){
this.list.push(element);

}

ولكن بإستخدام الgenerics يمكننا القيام بهذه المهمة بشكل أسهل كما في هذا الشكل:

public <T> insertElement(T element){
///الشفرة لإضافة العنصر
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هي ببساطة تعميم لنوع بيانات معين بدون تحديده، أي اذا كان لديك مكان يقبل عدة انواع (float, double, int) تعبر عن ذلك بوضع رمز (لا على التعيين عادًة T) معناه انه يمكن قبل أي نوع هنا لا على التحديد

مثال الصف List هو قائمة بعناصر من نوع واحد، النوع غير محدد لذلك نضع مكان النوع رمزا يحدد عند استخدام الصف

class List<T> {
  ...
}

ويمكن الاشارة للنوع داخل الصف

class List<T> {
  ...
  
  public T getItem(int index) { // التابع سيعيد قيمة من النوع الممرر للصف
  	...
  }
}
// نحدد النوع عند استخدام الصف
List<Int> numbers = new List<Int>();

ويمكن حصر الانواع التي يمكن استبدالها عبر تحديد النوع الأب

// الصف يقبل الانواع التي يمكن معاملتها كنص
class Printer<T extends String> {
	...  
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...