[μ΄νŽ™ν‹°λΈŒ μžλ°”] Item06 μ™„λ²½κ³΅λž΅. Deprecation

2023. 1. 19. 08:50ㆍJAVA/Effective JAVA

728x90
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λŠ” 뭔지도 확인할 수 μžˆλ‹€. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90