Language متوسط

استبدل سلاسل instanceof إذا كانت if-else بأنماط نوع switch نظيفة.

✕ Java 8
String format(Object obj) {
    if (obj instanceof Integer i)
        return "int: " + i;
    else if (obj instanceof Double d)
        return "double: " + d;
    else if (obj instanceof String s)
        return "str: " + s;
    return "unknown";
}
✓ Java 21+
String format(Object obj) {
    return switch (obj) {
        case Integer i -> "int: " + i;
        case Double d  -> "double: " + d;
        case String s  -> "str: " + s;
        default        -> "unknown";
    };
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
📐

إيزاع منظّم

switch يجعل بنية التفريع صريحةً وقابلةً للمسح.

🎯

صيغة التعبير

يُرجع قيمةً مباشرةً — لا متغير قابل للتعديل مطلوب.

🛡️

آمن

المترجم يتحقق من شمولية جميع الأنواع الفرعية المُغلقة.

الأسلوب القديم
سلسلة if-else
الأسلوب الحديث
أنماط الأنواع
منذ JDK
21
الصعوبة
متوسط
مطابقة الأنماط في switch
متاح

متاح على نطاق واسع منذ JDK 21 LTS (سبتمبر 2023)

تتيح مطابقة الأنماط في switch مطابقة الأنواع مباشرةً ودمج فحص النوع والتحويل والربط في تسمية حالة واحدة موجزة. يتحقق المترجم من الشمولية.

مشاركة 𝕏 🦋 in