Š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ích jazycích podporujících funkcionální programování, kde je neměnnost klíčovou vlastností. 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 měnitelným objektům může vést k závodním podmínkám a poškození dat.

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. Za třetí je lze použít jako klíče v hashovacích tabulkách a množinách, protože jejich hashovací hodnota je pevná a v čase 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