[μ΄νŽ™ν‹°λΈŒ μžλ°”] Item14 μ™„λ²½κ³΅λž΅. μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€

2023. 2. 7. 09:34ㆍJAVA/Effective JAVA

728x90

 

item14. Comparable을 κ΅¬ν˜„ν• μ§€ κ³ λ―Όν•˜λΌ. 

" p90. μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€μ΄λ―€λ‘œ compareTo λ©”μ„œλ“œμ˜ 인수 νƒ€μž…μ€ 컴파일 νƒ€μž„μ— 정해진닀. μž…λ ₯ 인수의 νƒ€μž…μ„ ν™•μΈν•˜κ±°λ‚˜ ν˜•λ³€ν™˜ν•  ν•„μš”κ°€ μ—†λ‹€λŠ” λœ»μ΄λ‹€."

 

 

[TIL] 2023.01.09 μ œλ„€λ¦­ Generic μ΄λž€? (tistory.com)

 

[TIL] 2023.01.09 μ œλ„€λ¦­ Generic μ΄λž€?

TIL : Today I Learned πŸ€— [JAVA] μ œλ„€λ¦­ Generic μ΄λž€? [μ΄νŽ™ν‹°λΈŒ μžλ°”] Item3. private μƒμ„±μžλ‚˜ μ—΄κ±° νƒ€μž…μœΌλ‘œ μ‹±κΈ€ν†€μž„μ„ λ³΄μ¦ν•˜λΌ. (private μƒμ„±μž + public static final ν•„λ“œ ) (tistory.com) [μ΄νŽ™ν‹°λΈŒ μžλ°”] Item3. pri

hyejin.tistory.com

μ—¬κΈ°μ„œ μ œλ„€λ¦­μ— λŒ€ν•΄μ„œ ν•œλ²ˆ TIL 주제둜 닀룬 적이 있긴 ν•œλ° μ΄νŽ™ν‹°λΈŒ μžλ°” μ™„λ²½κ³΅λž΅μ—μ„œλ„ ν•΄λ‹Ή λ‚΄μš©μ΄ λ‚˜μ™€μ„œ ν•œλ²ˆ 더 μ •λ¦¬ν•œλ‹€. 

 

 

 

 

πŸ‘Ύ μ œλ„€λ¦­μ„ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 이유 

μœ„μ—μ„œλ„ λ‚˜μ™€μžˆλ“―μ΄ μ œλ„€λ¦­ νƒ€μž…μ„ μ‚¬μš©ν•¨μœΌλ‘œμ¨ 잘λͺ»λœ νƒ€μž…μ΄ μ‚¬μš©λ  수 μžˆλŠ” 문제λ₯Ό 컴파일 κ³Όμ •μ—μ„œ μ œκ±°ν•  수 있기 λ•Œλ¬Έμ΄λ‹€. 

public class PhoneNumber implements Comparable<PhoneNumber>
{
  ...
}

Comparable이 νƒ€μž…μ„ 인수둜 λ°›λŠ” μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€λ‘œ PhoneNumberλ₯Ό νƒ€μž…μœΌλ‘œ 지정해주면 

@Override
public int compareTo(PhoneNumber pn)
{
   return COMPARATOR.compare(this, pn);
}

compareTo λ©”μ„œλ“œμ˜ 인수 νƒ€μž…μ€ PhoneNumber둜  컴파일 νƒ€μž„μ— 정해진닀. 

μ΄λ ‡κ²Œ 정해지면 μž…λ ₯ 인수의 νƒ€μž…μ„ ν™•μΈν•˜κ±°λ‚˜ ν˜•λ³€ν™˜ν•  ν•„μš”κ°€ μ—†λ‹€. 인수의 νƒ€μž…μ΄ 잘λͺ»λλ‹€λ©΄ 컴파일 μžμ²΄κ°€ λ˜μ§€ μ•Šκ²Œ μžλ°” μ»΄νŒŒμΌλŸ¬λŠ” μ½”λ“œμ—μ„œ 잘λͺ» μ‚¬μš©λœ νƒ€μž… λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” λ¬Έμ œμ μ„ μ œκ±°ν•˜κΈ° μœ„ν•΄μ„œ μ œλ„€λ¦­ μ½”λ“œμ— κ°•ν•œ νƒ€μž… 체크λ₯Ό ν•˜κΈ° λ•Œλ¬Έλ‹€. 

 

πŸ“– λŸ°νƒ€μž„ μ‹œ νƒ€μž… μ—λŸ¬κ°€ λ‚˜λŠ” κ²ƒλ³΄λ‹€λŠ” 컴파일 μ‹œμ— 미리 νƒ€μž…μ„ κ°•ν•˜κ²Œ μ²΄ν¬ν•΄μ„œ μ—λŸ¬λ₯Ό 사전에 λ°©μ§€ν•˜λŠ” 것이 μ’‹λ‹€. 

 

μ΄λ ‡κ²Œ μ œλ„€λ¦­ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ νƒ€μž…μ„ κ΅­ν•œν•˜κΈ° λ•Œλ¬Έμ— μš”μ†Œλ₯Ό μ°Ύμ•„μ˜¬ λ•Œ νƒ€μž… λ³€ν™˜ν•  ν•„μš”κ°€ μ—†μ–΄ ν”„λ‘œκ·Έλž¨ μ„±λŠ₯이 ν–₯μƒλ˜λŠ” νš¨κ³Όλ„ μžˆλ‹€. 

 

 

 

 

πŸ“š μ œλ„€λ¦­ νƒ€μž…μ„ μ‚¬μš©ν•˜λŠ” 이유 

- μž¬μ‚¬μš©μ„± 증가 

: μ œλ„€λ¦­ νƒ€μž…μ€ μ—¬λŸ¬ νƒ€μž…μ˜ νŒŒλΌλ―Έν„°λ₯Ό μ‚½μž…ν•΄ 객체λ₯Ό 생성할 수 있기 λ•Œλ¬Έμ— μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ ν•˜κ³  μž¬μ‚¬μš©μ„±μ„ 높인닀. 

 

- 컴파일 μ‹œ νƒ€μž… μ—λŸ¬ 발견 κ°€λŠ₯ 

: μ œλ„€λ¦­ νƒ€μž…μ˜ 경우 컴파일 μ‹œ 잘λͺ» μ‚¬μš©λ˜λŠ” νƒ€μž… λ¬Έμ œμ μ„ μ œκ±°ν•˜κΈ° μœ„ν•΄μ„œ κ°•ν•œνƒ€μž… 체크λ₯Ό μˆ˜ν–‰ν•΄μ„œ 컴파일 이후 λŸ°νƒ€μž„ λ‹¨κ³„μ—μ„œ νƒ€μž… λ¬Έμ œκ°€ λ°œμƒν•  κ°€λŠ₯성을 방지해쀀닀. 

 

- μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž… λ³€ν™˜ μˆ˜ν–‰ 

: 컴파일 λ‹¨κ³„μ—μ„œ μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž… μΊμŠ€νŒ…μ„ μˆ˜ν–‰ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— λΆˆν•„μš”ν•˜κ²Œ μ½”λ“œμ—μ„œ νƒ€μž… μΊμŠ€νŒ…μ„ 해쀄 ν•„μš”κ°€ μ—†λ‹€. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90