Šipka zpět ZPĚT

Co je to neměnný objekt?

Neměnný objekt je objekt, který po vytvoření nelze změnit. Jinými slovy, jeho stav nelze po jeho instanciování změnit. Jakýkoli pokus o změnu jeho hodnoty vede k vytvoření nového objektu s aktualizovanou hodnotou, přičemž původní objekt zůstane nezměněn.

Tento koncept se často používá v programovací jazyky které podporují funkcionální programování, jehož klíčovou vlastností je neměnnost. Neměnné objekty jsou užitečné v situacích, kdy by se stav objektu neměl měnit, například ve vícevláknových prostředích, kde souběžný přístup k proměnlivým objektům může vést k závodním podmínkám a data korupce.

Neměnné objekty mají oproti proměnlivým objektům několik výhod. Zaprvé jsou bezpečné pro vlákna a lze je bezpečně sdílet mezi vlákny bez nutnosti synchronizace. Za druhé se o nich lépe uvažuje, protože jejich stav se nemůže neočekávaně změnit. Zatřetí je lze použít jako klíče v systému hash tabulky a sady, protože jejich hodnota hash je pevná a v průběhu času se nemění.

Příklady neměnných objektů v Java zahrnují String, Integer a LocalDate. Jakmile je objekt String vytvořen, nelze jeho hodnotu změnit. Jakýkoli pokus o její změnu vede k vytvoření nového objektu String s aktualizovanou hodnotou. Podobně nelze měnit hodnotu objektu Integer, jakmile byl jednou vytvořen.

Neměnné objekty však nejsou vhodné pro všechny situace. V některých případech jsou vhodnější mutabilní objekty, například když je třeba často aktualizovat stav objektu. V těchto případech je důležité zajistit synchronizaci přístupu k mutabilním objektům, aby se předešlo závodním podmínkám a poškození dat.

Souhrnně řečeno, neměnný objekt je objekt, který nelze po vytvoření upravit. Je užitečný v situacích, kdy by se stav objektu neměl měnit, například ve vícevláknových prostředích. Neměnné objekty mají oproti proměnlivým objektům několik výhod, včetně bezpečnosti vláken, snadné argumentace a vhodnosti použití jako klíče v hashovacích tabulkách a množinách.

cs_CZCzech