مثال حول 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 و هو مجرد عرف يعني الكلاس يتعامل مع الأرقام كيف تم عمل وراثة داخله؟