Q. Immutable Object (λΆλ³κ°μ²΄) μ λν΄ μ€λͺ νκ³ , μλ° ν΄λμ€ μ€ λνμ μΈ μ¬λ‘λ₯Ό μλ €μ£ΌμΈμ.
A. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μμ΄ λΆλ³ κ°μ²΄λ μμ± ν κ·Έ μνλ₯Ό λ°κΏ μ μλ κ°μ²΄λ₯Ό λ§νλ€. (ν μμμμ κ·Έ κ°μ²΄κ° κ°λ¦¬ν€κ³ μλ λ°μ΄ν° μ체μ λ³νκ° λΆκ°λ₯) λΆλ³ κ°μ²΄λ₯Ό μ¬μ©νλ©΄ 볡μ λ λΉκ΅λ₯Ό μν μ‘°μμ λ¨μν ν μ μκ³ , μ±λ₯ κ°μ μλ λμμ μ€λ€. νμ§λ§ κ°μ²΄κ° λ³κ²½ κ°λ₯ν λ°μ΄ν°λ₯Ό λ§μ΄ κ°μ§κ³ μλ κ²½μ°μ λΆλ³μ΄ μ€νλ € λΆμ μ ν κ²½μ°κ° μλ€. μ΄ λλ¬Έμ λ§μ νλ‘κ·Έλλ° μΈμ΄μμλ λΆλ³μ΄λ κ°λ³ μ€ νλλ₯Ό μ νν μ μλλ‘ νκ³ μλ€.
-
λνμ μΈ μλ° ν΄λμ€μλ String μ΄ μλ€.
-
String a = "aa"
νa = "bb"
λ “bb” μ λν μλ‘μ΄ κ°μ²΄λ₯Ό λ§λλ κ²λ€λ₯Έ μν©μΌ μλ μλλ°, κ²½νν κ±Έ μ€λͺ νλ©΄ λ©μλ νλΌλ―Έν°λ₯Ό λ°μ λ
final
μ΄λΌλ νλΌλ―Έν°λ₯Ό μ¬μ©νλ€. μ΄λ νλΌλ―Έν°λ₯Ό λ³κ²½ν μ μλλ‘ νκΈ° μν΄μ λΆμ΄λλ°, μ΄κ² primitive νμ μ΄λ λ¨μΌ κ°μ²΄μμλ μ ν¨νλ°, collection κ°μ²΄μμλ μλλ€. νΉν Map μ λ°μ λ..κ·Έλμ λΆλ³κ°μ²΄μ λν΄μ
final
μ λΆμμΌλ λΆλ³μ΄μ§ νλ μκ°μ μνλκ² μ’μ κ² κ°λ€. -
μ₯μ
- κ°μ²΄μ λν μ λ’°λκ° λμμ§λ€. κ°μ²΄κ° μμ±λμ΄ λ³κ²½λμ§ μλλ€λ©΄, (μνκ° λ³νμ§ μλλ€λ©΄) transaction λ΄μμ κ·Έ κ°μ²΄λ₯Ό λ―Ώκ³ μΈ μ μλ€.
- λ©ν° μ€λ λ νκ²½μμ λκΈ°ν μ²λ¦¬ μμ΄ κ°μ²΄λ₯Ό 곡μ ν μ μλ€.
-
λ¨μ
- κ°μ²΄κ° κ°μ§λ κ°λ§λ€ μλ‘μ΄ κ°μ²΄λ₯Ό νμλ‘ νκΈ° λλ¬Έμ, λ©λͺ¨λ¦¬ λμμ μλ‘μ΄ κ°μ²΄λ₯Ό κ³μ μμ±ν΄μΌ νκΈ° λλ¬Έμ μ±λ₯ μ νλ₯Ό λ°μμν¬ μ μλ€. (μ΄κ±Έ μ€λ¬΄μμ μ§μ μ μΌλ‘ κ²ͺμ μ μ μλλ°, μμ΄λ¬λ νκ²λ, μ½λ©ν μ€νΈλ₯Ό νλ€κ° κ²ͺμ μ μ΄ μλ€…. String μ μ°λ©΄ μκ° μ΄κ³ΌμΈλ°, StringBuilder λ₯Ό μ°λ©΄ ν΅κ³Όκ° λλ€.)