התאמת תבניות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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”
אתגר
קלצרו מתודה בשם processValue שמקבלת ארגומנט אחד:
- אובייקט (
value) שיכול להיות מסוגים שונים
על המתודה להשתמש בהתאמת תבניות עם instanceof כדי לעבד את הערך ולהחזיר מחרוזת לפי הכללים הבאים:
- אם זה Integer: החזירו "Number: " ואחריו הערך כשהוא מוכפל ב־2
- אם זה 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מערכים רב־ממדיים
יסודות מערכים דו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום — מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים מדורגיםמערכים תלת־ממדיים ומעבר להםתבניות נפוצות במערכים דו־ממדייםסיכום — כל מה שצריך לדעת על מערכיםתרגלו בעצמכם: קומפיילר Java אונליין