התאמת תבניות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 אונליין