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

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

في المثال التالي قمنا بتعريف دالتين إسمهم maximum, أي فعلنا Overload هنا.

الدالة الأولى نعطيها رقمين من أي نوع كان سواء (int - long - float - double ) فتقوم بإرجاع العدد الأكبر بينهما.
الدالة الثانية نعطيها ثلاث أرقام من أي نوع كان أيضاً فتقوم بإرجاع العدد الأكبر بينهما.

ملاحظة: جعلنا الدالة الثانية تستدعي الدالة الأولى مرتين بدل كتابتها من الصفر.


Main.java
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) ); } }

سنحصل على النتيجة التالية عند التشغيل.

7
8
8
15
17.8
7 8 8 15 17.8

إذاً عندما نقول أن النوع المجهول يرث من كلاس محدد. فهذا يعني أن الكود مصمم للتعامل مع هذا الكلاس, بالإضافة إلى جميع الكلاسات التي ترث منه.