تغییرات switch تا jdk-17

تغییرات switch تا 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
کپی شد!