2023. 1. 19. 08:50γJAVA/Effective JAVA
item06. λΆνμν κ°μ²΄ μμ±μ νΌνλΌ.
" p31. μ¬μ© μμ API (Deprecation)"
Deprecation
μλ° APIμμ μ’ μ’ λ©μλ μμ @Deprecated κ° νκΈ°λ μ½λλ€μ νμΈν μ μλ€.
μ΄κ² νκΈ°λ ν΄λμ€λ λ©μλκ° μλ€λ©΄ μμΌλ‘λ μ¬μ©νμ§ μλκ² μ’μλ°
κ·Έ μ΄μ λ μ΄λ€ μ΄μ λ‘λ μμΌλ‘ μ¬λΌμ§κ² λ λ©μλλ‘ μ¬μ© μμ νλ©° λ€λ₯Έ λ©μλ μ¬μ©μ κΆμ₯νλ κ²½μ°κ° λ§μλ° νΉμ λͺ°λΌμ μμ λ₯Ό λ°λ‘ νλκ² μλλΌ @Deprecated μ΄λ Έν μ΄μ μ ν΅ν΄μ μκ³ ?λ₯Ό ν΄μ€λ€κ³ ν μ μλ€.
@Deprecated
: ν΄λΌμ΄μΈνΈκ° μ¬μ©νμ§ μκΈΈ λ°λΌλ μ½λ μμ μ΄ μ΄λ Έν μ΄μ μ μ¬μ©ν΄μ£Όλ©΄ μ»΄νμΌ μ κ²½κ³ λ©μμ§λ₯Ό ν΅ν΄ μ¬μ© μμ λ₯Ό κΆμ₯νλ APIλΌλ κ²μ ν΄λΌμ΄μΈνΈμκ² μλ €μ€ μ μλ€.
public class Deprecation
{
@Deprecated(forRemoval = true, since = "1.2")
public Deprecation()
{
}
private String name;
public Deprecation(String name)
{
this.name = name;
}
}
μμ λ‘ μλλ Deprecation κ°μ²΄λ₯Ό μμ±ν λ κΈ°λ³Έ μμ±μλ₯Ό ν΅ν΄ κ°μ²΄ μμ±μ΄ κ°λ₯νλ€λ©΄ μ΄μ λ 무쑰건 nameμ λ°λλ‘ νκ³ μΆλ€λ©΄
κΈ°λ³Έ μμ±μμ @Deprecated μ΄λ Έν μ΄μ μ λΆμ¬μ μ¬μ©μμ ν μ μλλ‘ νλ€.
κ·Έλ¬λ©΄ ν΄λΌμ΄μΈνΈμμ ν΄λΉ μ½λλ₯Ό μ¬μ©νλ €κ³ νλ©΄ κ²½κ³ λ©μμ§λ₯Ό ν΅ν΄ μ¬μ© μμ λ₯Ό κΆμ₯νλ APIλΌκ³ μλ €μ€λ€.
μ¬κΈ°μ λν΄μ Java 9λΆν° λ±μ₯ν κ²μΌλ‘ forRemoval μ΅μ μ μ¬μ©νλ©΄ λ κ°λ ₯νκ² μ¬μ©νμ§ λ§λΌκ³ μλ €μ€ μ μλ μ΅μ μΌλ‘ μ΄μ 곧 μ¬λΌμ§ λ©μλλΌκ³ μλ €μ€λ€!
μ΄ μ΅μ μ μ¬μ©νλ©΄
μ΄λ κ² λΉ¨κ°μ€λ‘ νκΈ°λλ κ²μ μ μ μλ€.
@deprecated
: λ¬Έμν javadoc μ μ¬μ©νλ μ΄λ Έν μ΄μ μΌλ‘ μ ν΄λΉ API μ¬μ©μ μ§μνλ©°, κ·Έ λμ κΆμ₯νλ APIκ° μ΄λ€ κ²μΈμ§ νκΈ°νμ¬ λ€λ₯Έ μ¬λμ΄ λ μ½κ² μμ μλλ‘ ν μλ μλ€.
public class Deprecation
{
/**
* @deprecated in favor of
* {@link #Deprecation(String)}
*/
// TODO μ λ
Έν
μ΄μ
νλ‘μΈμ
// forRemoval μ΅μ
μ μ¬μ©νλ©΄ λ κ°λ ₯νκ² μλ €μ£Όλ κ²!
@Deprecated(forRemoval = true, since = "1.2")
public Deprecation()
{
}
private String name;
public Deprecation(String name)
{
this.name = name;
}
}
/** */ μ£Όμμμ νκΈ°λ κ²μ²λΌ λνλ΄λ©΄
javadocμμ deprecatedλ λ©μλλ₯Ό λ°λ‘ μ μ μκ³ , μ ν΄λΉ apiλ₯Ό μ¬μ©νλ©΄ μλλ©°, λμ κΆμ₯νλ apiλ λμ§λ νμΈν μ μλ€.