tgoop.com/javapro_ir/4572
Create:
Last Update:
Last Update:
✳️ موضوع: Pattern Matching در switch — ویژگی قدرتمند از جاوا 17 به بعد
در نسخههای جدید جاوا، یکی از تغییرات مهم و زیبا، اضافه شدن Pattern Matching در عبارتهای switch است. این ویژگی باعث میشود کدهای شرطی ما خواناتر، کوتاهتر و ایمنتر از نظر نوع داده (Type-Safe) شوند.
🔹 ۱. مشکل در نسخههای قدیمیتر
در نسخههای قدیمی جاوا، وقتی از switch
استفاده میکردیم، فقط نوعهای ساده مانند int
, String
یا enum
پشتیبانی میشدند.
برای بررسی نوع (type) یک شیء، مجبور بودیم از instanceof
استفاده کنیم و سپس آن را cast کنیم:
static String format(Object obj) {
if (obj instanceof Integer) {
Integer i = (Integer) obj;
return "Integer: " + i;
} else if (obj instanceof String) {
String s = (String) obj;
return "String: " + s;
} else {
return "Unknown Type";
}
}
کد بالا تکراری و مستعد خطاست. جاوا 17 با اضافه کردن Pattern Matching در switch این مشکل را به شکلی ظریف و هوشمند حل کرد.
🔹 ۲. Pattern Matching در switch — نسخهی جدید و تمیزتر
در نسخههای جدید، میتوانیم مستقیماً نوع متغیر را در case تعریف کنیم، بدون نیاز به casting دستی:
static String format(Object obj) {
return switch (obj) {
case Integer i -> "Integer: " + i;
case String s -> "String: " + s.toUpperCase();
case null -> "Null value detected!";
default -> "Unknown Type";
};
}
📍 توضیح:
* در
case Integer i
، اگر نوع ورودی
Integer باشد، بهصورت خودکار متغیر i
ساخته میشود.* نیازی به
instanceof
یا cast دستی نیست.* مقدار بازگشتی با فلش
->
تعریف میشود و در یک خط قابل نوشتن است.🔹 ۳. مثال کامل از کاربرد عملی
public class PatternMatchingSwitch {
public static void main(String[] args) {
System.out.println(describe(42));
System.out.println(describe("Saleh"));
System.out.println(describe(3.14));
System.out.println(describe(null));
}
static String describe(Object obj) {
return switch (obj) {
case Integer i -> "Integer number: " + i;
case String s when s.length() > 5 -> "Long String: " + s;
case String s -> "Short String: " + s;
case Double d -> "Double number: " + d;
case null -> "Null value!";
default -> "Unknown type";
};
}
}
📍 خروجی برنامه:
Integer number: 42
Long String: Saleh
Double number: 3.14
Null value!
🔹 ۴. ویژگی جالب – استفاده از شرط اضافی (when clause)
عبارت
when
در جاوا 21 به switch اضافه شد و به شما اجازه میدهد برای هر case شرط خاصی تعریف کنید.در مثال بالا،
case String s when s.length() > 5
فقط زمانی اجرا میشود که مقدار obj
رشتهای و طول آن بیشتر از ۵ کاراکتر باشد.🔹 ۵. مزایای Pattern Matching در switch
* حذف کدهای تکراری و نیاز به cast دستی
* افزایش ایمنی نوع دادهها (Type Safety)
* افزایش خوانایی و سادگی کد
* امکان ترکیب شرطها با
when
برای کنترل دقیقتر🧠 جمعبندی:
ویژگی Pattern Matching در switch یکی از گامهای بزرگ جاوا به سمت کدنویسی تابعیتر و خواناتر است.
این قابلیت نهتنها از نظر ظاهری زیباتر است، بلکه خطاهای احتمالی ناشی از تبدیل نوع را نیز کاهش میدهد.
#کاربرـحرفهـای
🆔 @javapro_ir
🆔 @group_javapro
BY برنامه نویسی جاوا | Java
Share with your friend now:
tgoop.com/javapro_ir/4572