مطابقة الأنماط
جزء من قسم المنطق وتدفق التنفيذ في رحلة Java على Coddy. الدرس 37 من 59.
تتيح لك مطابقة الأنماط في Java اختبار ما إذا كان الكائن من نوع محدد واستخراج مكوّناته. وهي تُبسّط عمليات التحقق من النوع والتحويل.
لنرَ كيفية استخدام مطابقة الأنماط مع instanceof:
Object obj = "Hello";
if (obj instanceof String str) {
// يُحوَّل str تلقائيًا إلى String
System.out.println(str.toUpperCase());
}بعد تنفيذ التعليمات البرمجية أعلاه، يكون الناتج:
"HELLO"
يمكنك أيضًا ربط عمليات التحقق من مطابقة الأنماط باستخدام else if:
Object value = 42;
String result;
if (value instanceof Integer i) {
result = "Number: " + i;
} else if (value instanceof String s) {
result = "Text: " + s;
} else {
result = "Unknown";
}بعد تنفيذ التعليمات البرمجية أعلاه، تحتوي result على:
“Number: 42”
التحدي
سهلأنشئ method باسم processValue تأخذ وسيطًا واحدًا:
- كائن (
value) يمكن أن يكون من أنواع مختلفة
يجب أن تستخدم method مطابقة الأنماط مع instanceof لمعالجة القيمة وإرجاع سلسلة نصية وفقًا للقواعد التالية:
- إذا كانت Integer: أرجِع "Number: " متبوعة بالقيمة مضاعفة
- إذا كانت String: أرجِع "Text: " متبوعة بالقيمة بأحرف كبيرة
- إذا كانت Boolean: أرجِع "Boolean: " متبوعة بالقيمة المعاكسة (تتحول true إلى false والعكس صحيح)
- لأي نوع آخر: أرجِع "Unknown"
جرّب بنفسك
import java.util.Scanner;
public class Main {
public static String processValue(Object value) {
// TODO: استخدم مطابقة الأنماط مع instanceof لمعالجة القيمة
// إذا كانت القيمة من النوع Integer: فأرجع "Number: " + (value * 2)
// إذا كانت القيمة من النوع String: فأرجع "Text: " + value.toUpperCase()
// إذا كانت القيمة من النوع Boolean: فأرجع "Boolean: " + (!value)
// لأي نوع آخر: أرجع "Unknown"
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String type = scanner.nextLine();
String inputValue = scanner.nextLine();
Object value = switch(type) {
case "Integer" -> Integer.parseInt(inputValue);
case "String" -> inputValue;
case "Boolean" -> Boolean.parseBoolean(inputValue);
default -> inputValue;
};
System.out.println(processValue(value));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكمتدرّب بنفسك: مترجم Java عبر الإنترنت