الأنماط المحروسة بـ when
أضف شروطاً لحالات الأنماط باستخدام حراس when.
مقارنة الكود
✕ Java 8
if (shape instanceof Circle c) {
if (c.radius() > 10) {
return "large circle";
} else {
return "small circle";
}
} else {
return "not a circle";
}
✓ Java 21+
return switch (shape) {
case Circle c
when c.radius() > 10
-> "large circle";
case Circle c
-> "small circle";
default -> "not a circle";
};
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
مطابقة دقيقة
ادمج النوع + الشرط في تسمية حالة واحدة.
بنية مسطّحة
لا if/else متداخلة داخل حالات switch.
نية مقروءة
جملة when تُقرأ كاللغة الطبيعية.
الأسلوب القديم
if متداخل
الأسلوب الحديث
جملة when
منذ JDK
21
الصعوبة
متوسط
دعم JDK
الأنماط المحروسة بـ when
متاح
متاح على نطاق واسع منذ JDK 21 LTS (سبتمبر 2023)
كيف يعمل
تتيح الأنماط المحروسة لك تنقية مطابقة النوع بشرط منطقي إضافي. يُبقي هذا جميع منطق التفريع في switch بدلاً من تداخل جمل if داخل الحالات.
توثيق ذو صلة