Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

مثال حول Bounded Type Parameters في جافا؟

السلام عليكم، أريد مثال سهل حول Bounded Type Parameters لأن هذا المثال صعب عليّ و لم أفهمه.

public class Main {
 
  // هنا قمنا ببناء دالة نعطيها رقمين من أي نوع, فتقوم بمقارنتهما و ترجع الرقم الأكبر
  public static <N extends Number> N max (N x, N y)
  {
    // حتى نستطيع مقارنتهم, بعدها سيتم إرجاع العدد الأكبر بينهما double هنا سيتم تحويل نوع الأرقام المدخلة إلى النوع
    if ( x.doubleValue() > y.doubleValue() )
      return x;
    else
      return y;
  }
 
 
  // هنا قمنا ببناء دالة مشابهة للدالة السابقة, لكنها تقارن ثلاث أرقام مع بعض
  public static <N extends Number> N max (N x, N y, N z)
  {
    // بكل بساطة, تستدعي الدالة السابقة لمقارنة أول عددين, و معرفة الأكبر بينهما
    // بعدها تستدعيها من جديد لمقارنة العدد الأكبر بين العددين السابقين مع العدد الأخير
    return max( max(x, y), z );
  }
 
 
  public static void main(String[] args) {
 
    // التي تأخذ باراميترين max() هنا قمنا بإجراء ثلاث عمليات مقارنة باستخدام الدالة
 
    // int هنا قمنا بمقارنة رقمين نوعهما
    System.out.println( max(3, 7) );
 
    // long مع رقم نوعه float هنا قمنا بمقارنة رقم نوعه
    System.out.println( max(5.5F, 8L) );
 
    // long مع رقم نوعه float هنا قمنا بمقارنة رقم نوعه
    System.out.println( max(6.9D, 8L) );
 
    // التي تأخذ ثلاث باراميترات max() هنا قمنا بإجراء عمليتين مقارنة تعتمدان على الدالة
 
    // int هنا قمنا بمقارنة ثلاث أرقام نوعهم
    System.out.println( max(10, 15, 5) );
 
    // double مع رقم نوعه float مع رقم نوعه int هنا قمنا رقم نوعه
    System.out.println( max(11, 12.5F, 17.8D) );
 
  }
 
}

هناك أشياء تم استخدامها و لم يتم شرحها كالجزئية التالية.

  // هنا قمنا ببناء دالة نعطيها رقمين من أي نوع, فتقوم بمقارنتهما و ترجع الرقم الأكبر
  public static <N extends Number> N max (N x, N y)
  {
    // حتى نستطيع مقارنتهم, بعدها سيتم إرجاع العدد الأكبر بينهما double هنا سيتم تحويل نوع الأرقام المدخلة إلى النوع
    if ( x.doubleValue() > y.doubleValue() )
      return x;
    else
      return y;
  }

الرمز <N> هو اختصار لـNumber و هو مجرد عرف يعني الكلاس يتعامل مع الأرقام كيف تم عمل وراثة داخله؟

تعليقات 1

أضف تعليق

يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.