κ·μΉ4 : κ°μ²΄ μμ±μ λ§μ λλ private μμ±μλ₯Ό μ¬μ©νλΌ
κ·μΉ4 : κ°μ²΄ μμ±μ λ§μ λλ private μμ±μλ₯Ό μ¬μ©νλΌ κ΄λ ¨
Enforce noninstantiability with a private constructor
μ μ λ©μλλ νλλ§ λͺ¨μ ν΄λμ€λ₯Ό λ§λ€κ³ μΆμ λκ° μλ€. μ΄λ° ν΄λμ€λ€μ μ λͺ μ΄ λμλ°, κ°μ²΄ μ§ν₯μ μΌλ‘ μκ°νμ§ μμΌλ €λ μ¬λλ€μ΄ λ¨μ©νλ κ²½ν₯μ΄ μκΈ° λλ¬Έμ΄λ€. νμ§λ§ μ΄λ° ν΄λμ€λ€λ λΆλͺ νμν λκ° μλ€. μλ°μ κΈ°λ³Έ μλ£ν κ°(primitive value) λλ λ°°μ΄μ μ μ©λλ λ©μλλ₯Ό νκ΅°λ° λͺ¨μλ λ μ μ©νλ€.
java.lang.Math
λ java.util.Arrays
κ° μ’μ μλ€. νΉμ μΈν°νμ΄μ€λ₯Ό ꡬννλ κ°μ²΄λ₯Ό λ§λλ ν©ν 리 λ©μλ λ±μ μ μ λ©μλλ₯Ό λͺ¨μλμ λλ μ¬μ©ν μ μλ€. java.util.Collections
λ κ·Έ μ’μ μλ€ (μλ°8μμλ μΈν°νμ΄μ€μ μ§μ λ©μλλ₯Ό μΆκ°ν μ μλ€). λ§μ§λ§μΌλ‘ final
ν΄λμ€μ μ μ©ν λ©μλλ€μ λͺ¨μλμ λλ νμ©ν μ μλ€. ν΄λμ€λ₯Ό κ³μΉνμ¬ λ©μλλ₯Ό μΆκ°ν μ μμΌλ λ§μ΄λ€.
κ·Έλ° μ νΈλ¦¬ν° ν΄λμ€(utility class)λ€μ κ°μ²΄λ₯Ό λ§λ€ λͺ©μ μ ν΄λμ€κ° μλλ€. κ°μ²΄λ₯Ό λ§λ€λ©΄ μ€νλ € μ΄μνλ€. νμ§λ§ μμ±μλ₯Ό μλ΅νλ©΄ μ»΄νμΌλ¬λ μλμΌλ‘ κΈ°λ³Έ μμ±μλ₯Ό λ§λ€μ΄ λ²λ¦°λ€. κ°μ²΄λ₯Ό λ§λ€ μ μλλ‘ νλ €κ³ ν΄λμ€λ₯Ό abstract
λ‘ μ μΈν΄ λ΄€μ μμ©μλ€. νμ ν΄λμ€λ₯Ό μ μνλ μκ° κ°μ²΄ μμ±μ΄ κ°λ₯ν΄μ§κΈ° λλ¬Έ. κ²λ€κ° abstract
ν΄λμ€λκΉ κ³μΉν΄μ μ¬μ©νλ κ²μ΄ λ§λ€κ³ μ°©κ°νλ μ¬μ©μλ μμ μ μλ€. μ΄λ΄ λ private
μμ±μλ₯Ό ν΄λμ€μ λ£μ΄μ κ°μ²΄ μμ±μ λ°©μ§νμλ κ²μ΄λ€.
public class Utility {
private Utility () {
throw new AssertionError();
}
}
AssertionError
λ λ°λμ νμν κ²μ μλμ§λ§, ν΄λμ€ μμμ μ€μλ‘ μμ±μλ₯Ό νΈμΆνλ©΄ λ°λ‘ μ μ μκ² νκΈ° μν κ²μ΄λ€.