Javaمثال حول Bounded Type Parameters في جافا
في المثال التالي قمنا بتعريف دالتين إسمهم maximum
, أي فعلنا Overload هنا.
الدالة الأولى نعطيها رقمين من أي نوع كان سواء (int
- long
- float
- double
) فتقوم بإرجاع العدد الأكبر بينهما.
الدالة الثانية نعطيها ثلاث أرقام من أي نوع كان أيضاً فتقوم بإرجاع العدد الأكبر بينهما.
ملاحظة: جعلنا الدالة الثانية تستدعي الدالة الأولى مرتين بدل كتابتها من الصفر.
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) ); } }
سنحصل على النتيجة التالية عند التشغيل.
7 8 8 15 17.8
إذاً عندما نقول أن النوع المجهول يرث من كلاس محدد. فهذا يعني أن الكود مصمم للتعامل مع هذا الكلاس, بالإضافة إلى جميع الكلاسات التي ترث منه.