2023. 1. 11. 11:46γJAVA/Effective JAVA
item04. μΈμ€ν΄μ€νλ₯Ό λ§μΌλ €κ±°λ private μμ±μλ₯Ό μ¬μ©νλΌ.
μΈμ€ν΄μ€νλ₯Ό λ§μμΌ νλ μ±κ²©μ ν΄λμ€λ€μ΄ μ‘΄μ¬νλλ° κ·Έ μ€ λνμ μΈ? κ²μ΄ μ μ λ©μλλ§μ λ΄μ μ νΈλ¦¬ν° ν΄λμ€λ μΈμ€ν΄μ€λ‘ λ§λ€μ΄ μ°λ €κ³ μ€κ³ν ν΄λμ€κ° μλλ€.
μΈμ€ν΄μ€ν λ§λ λ°©λ²
1) μΆμ ν΄λμ€λ‘ λ§λ€κΈ°
public abstract class UtilityClass {
public static String hello() {
return "hello";
}
}
μ΄λ°μμΌλ‘ μΆμν΄λμ€λ‘ μ μΈν΄μ μΈμ€ν΄μ€ν νλ κ²μ λ§μ μλ μμ§λ§..
μ΄λ μλΈν΄λμ€λ‘ ν΄λΉ ν΄λμ€λ₯Ό μμλ°μΌλ©΄ μΈμ€ν΄μ€νλ₯Ό ν μ μκΈ° λλ¬Έμ μλ²½ν λ§μ μλ μλ€.
2) private μμ±μ μΆκ°
μ± μμλ 1) λ°©λ²λ³΄λ€λ 2) λ°©λ²μ λ κΆμ₯νκ³ μλ€.
μλνλ©΄ 1)μ μλ²½ν μΈμ€ν΄μ€νλ₯Ό λ§μ μλ μκΈ° λλ¬Έμ λΆμΆ©λΆνκΈ° λλ¬Έμ΄λ€!
public class UtilityClass {
/**
* μ΄ ν΄λμ€λ μΈμ€ν΄μ€λ₯Ό λ§λ€ μ μμ΅λλ€.
*/
private UtilityClass() {
// λ΄λΆμμλ μμ±μλ₯Ό νΈμΆνμ§ λͺ»νλλ‘ νκΈ° μν΄μλ
// μλ¬λ₯Ό λμ Έμ€μΌλ‘μ¨ μ΄ μ½λλ λ§λλ©΄? μλλ€κ³ μκΈ°ν΄μ£Όλ κ²μ΄λ€.
// try-catchλ‘ μ‘μ νμ μμ
throw new AssertionError();
}
public static String hello() {
return "hello";
}
}
public class Main04 {
public static void main(String[] args) {
String hello = UtilityClass.hello();
}
}
μ΄λ κ² private μμ±μλ₯Ό μΆκ°ν΄μ£Όλ©΄ ν΄λμ€μ μΈμ€ν΄μ€νλ₯Ό λ§μ μ μλ€.
κ·Όλ° λ¨μ ? μ΄λΌκ³ νλ©΄ κ΅³μ΄ μμ¬μ©νλ μ½λλ₯Ό λ£μ΄μΌ νλ?μ λν λ¬Έμ ?κ° μλ€.
μ΄λ μμ μ½λμ μ£Όμμ²λΌ private μμ±μλ₯Ό ꡬνν μ΄μ μ λν΄μ μ€λͺ ν΄μ£Όλ κ²μ΄ μ’λ€.
μ΄λ κ² μμ±μλ₯Ό privateλ‘ μ μΈν΄μ£Όλ λ°©λ²μ μμμ λ°©μ§ν λλ κ°μ λ°©λ²μ μ¬μ©ν μ μλ€.