تغییرات سوییچ تا JDK 17 LTS

دستور سوییچ در jdk 17

دسترسی سریع

جاوا از اولین نسخه ای که منتشر شد تا الان تغییرات زیادی داشته سوییچ هم مستثنا از این قاعده نبوده و در JDK 17 LTS تغییرات قابل توجهی داشته تو این مقاله به طور خلاصه به این تغییرات میپردازیم

توجه:

در این مقاله i0, i1, i2, ... , ik و سمبل هایی از این قبیل فرضی هستن که میتوان هر مقدار دلخواهی رو بجاشون در نظر بگیریم

JDK < 1.8

قبل از JDK 1.8 شما فقط میتوانستید اعداد integer را به عنوان پارامتر داخل سوییچ پاس کنید

مثال:

int myInteger = ... switch(myInteger){ case i0: { ... break; } case i2: { ... break; } ... case ik: { ... break; } default: { ... } }

JDK >= 1.8

از JDK 1.8 به بعد علاوه بر integer از string و enum هم پشتیبانی شد

مثال:

String myString = ... switch(myString){ case s0 : { ... break; } case s1: { ... break; } ... case sk: { ... break; } default: { ... } }

در JDK 17 چه اتفاقی برای سوییچ افتاده؟ بیایید باهم بررسی کنیم :)

JDK >= 17

۱-قابلیت بازگرداندن مقدار توسط سوییچ:

شما میتوانید هر چیزی را با کلید واژه ی yield برگردانید

مثال:

String myString = ... MyType myType = switch(myString){ case s0: { ... yield myValue; } case s1: { ... yield myValue; } ... case sk: { ... yield myValue; } default: { ... yield myValue; } };

در این مثال myValue از نوع MyType هست و MyType متغیر فرضیه

۲-پشتیبانی از چند برچسبی:

در هر case میتوانید چند برچسب را مورد بررسی قرار بدید

مثال:

String myString = ... MyType myType = switch(myString){ case s0, s4: { ... yield myValue; } case s1, s3, s5: { ... yield myValue; } ... case sk: { ... yield myValue; } default: { ... yield myValue; } };

در کد بالا:

case s0, s4:{ ... }

یعنی اگر s0 یا s2 درست بود بلاک را اجرا کن...

۳- علامت فلش:

میتونیم در case ها به جای دو نقطه از فلش استفاده کنیم

مثال:

String myString = ... MyType myType = switch(myString){ case s0 , s4 -> { ... yield myValue; } case s1, s3 , s5 -> { ... yield myValue; } ... case sk -> { ... yield myValue; } default -> { ... yield myValue; } };

جاوا تا این نسخه بروزرسانی های مختلفی درونش به وجود اومده که بهبود سوییچ یکی از این بروزرسانی ها درجاوا است.

arrow_drop_up
کپی شد!