Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals 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 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;
}
// هنا قمنا ببناء دالة نعطيها رقمين من أي نوع, فتقوم بمقارنتهما و ترجع الرقم الأكبر 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

أضف تعليق

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