Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux 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) );
 
    }
 
}

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

7
8
8
15
17.8

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