جاوا از اولین نسخه ای که منتشر شد تا الان تغییرات زیادی داشته سوییچ هم مستثنا از این قاعده نبوده و در 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;
}
};
جاوا تا این نسخه بروزرسانی های مختلفی درونش به وجود اومده که بهبود سوییچ یکی از این بروزرسانی ها درجاوا است.