Kas yra nekintamas objektas?
Nekintamas objektas - tai objektas, kurio negalima keisti, kai jis jau sukurtas. Kitaip tariant, jo būsenos negalima keisti po to, kai jis buvo sukurtas. Bet koks bandymas pakeisti objekto vertę reiškia, kad sukuriamas naujas objektas su atnaujinta verte, o pradinis objektas lieka nepakeistas.
Ši sąvoka dažnai naudojama programavimo kalbos palaikančių funkcinį programavimą, kurio pagrindinė savybė - nekintamumas. Nekintami objektai naudingi tais atvejais, kai objekto būsenos negalima keisti, pavyzdžiui, daugiasrautėje aplinkoje, kai dėl vienalaikės prieigos prie kintamų objektų gali atsirasti lenktynių sąlygų ir duomenys korupcija.
Nekintami objektai turi keletą privalumų, palyginti su kintamais objektais. Pirma, jie yra saugūs gijoms ir gali būti saugiai dalijami tarp gijų be sinchronizacijos. Antra, juos lengviau pagrįsti, nes jų būsena negali netikėtai pasikeisti. Trečia, juos galima naudoti kaip raktus hash lenteles ir rinkinius, nes jų hash reikšmė yra pastovi ir laikui bėgant nesikeičia.
Nekintamų objektų pavyzdžiai Java apima String, Integer ir LocalDate. Sukūrus String objektą, jo reikšmės keisti negalima. Bet koks bandymas ją pakeisti lemia naujo objekto String su atnaujinta verte sukūrimą. Panašiai, sukūrus objektą Integer, jo vertės negalima keisti.
Tačiau ne visais atvejais tinka nekeičiami objektai. Kai kuriais atvejais, pavyzdžiui, kai objekto būseną reikia dažnai atnaujinti, labiau tinka kintamieji objektai. Tokiais atvejais svarbu užtikrinti, kad prieiga prie kintamų objektų būtų sinchronizuojama, kad būtų išvengta lenktyniavimo sąlygų ir duomenų sugadinimo.
Apibendrinant galima teigti, kad nekeičiamas objektas - tai objektas, kurio negalima keisti, kai jis jau sukurtas. Tai naudinga tais atvejais, kai objekto būsenos negalima keisti, pavyzdžiui, daugiasrautėje aplinkoje. Nekintami objektai turi keletą privalumų, palyginti su kintamais objektais, įskaitant gijų saugumą, paprastą pagrindimą ir tinkamumą naudoti kaip raktus hash lentelėse ir rinkiniuose.