item 4 dodo4513 - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

μ•„μ΄ν…œ4 μΈμŠ€ν„΄μŠ€ν™”λ₯Ό λ§‰μœΌλ €κ±°λ“  private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λΌ

  • μ΄λ”°κΈˆ λ‹¨μˆœνžˆ 정적 λ©”μ„œλ“œμ™€ 정적 ν•„λ“œλ§Œμ„ 담은 클래슀λ₯Ό λ§Œλ“€κ³  싢을 λ•Œκ°€ μžˆμ„ 것이닀. 객체 지ν–₯적으둜 μ‚¬κ³ ν•˜μ§€ μ•ŠλŠ” 이듀이 μ’…μ’… λ‚¨μš©ν•˜λŠ” 방식이기에 그리 곱게 λ³΄μ΄μ§€λŠ” μ•Šμ§€λ§Œ, λΆ„λͺ… λ‚˜λ¦„μ˜ μ“°μž„μƒˆκ°€ μžˆλ‹€. μ˜ˆμ»¨λŒ€ java.lang.Math와 java.util.Arrays처럼 κΈ°λ³Έ νƒ€μž… κ°’μ΄λ‚˜ λ°°μ—΄ κ΄€λ ¨ λ©”μ„œλ“œλ“€μ„ λͺ¨μ•„놓을 수 μžˆλ‹€. λ˜ν•œ, java.util.Collections처럼 νŠΉμ • μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” 객체λ₯Ό μƒμ„±ν•΄μ£ΌλŠ” 정적 λ©”μ„œλ“œ(ν˜Ήμ€ νŒ©ν„°λ¦¬)λ₯Ό λͺ¨μ•„놓을 μˆ˜λ„ μžˆλ‹€(μžλ°” 8λΆ€ν„° λŠ” 이런 λ©”μ„œλ“œλ₯Ό μΈν„°νŽ˜μ΄μŠ€μ— 넣을 수 μžˆλ‹€). λ§ˆμ§€λ§‰μœΌλ‘œ, final ν΄λž˜μŠ€μ™€ κ΄€λ ¨ν•œ λ©”μ„œλ“œλ“€μ„ λͺ¨μ•„놓을 λ•Œλ„ μ‚¬μš©ν•œλ‹€. final 클래슀λ₯Ό μƒμ†ν•΄μ„œ ν•˜μœ„ ν΄λž˜μŠ€μ— λ©”μ„œλ“œλ₯Ό λ„£λŠ” 건 λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

  • 정적 λ©€λ²„λ§Œ 담은 μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€λ‘œ λ§Œλ“€μ–΄ μ“°λ €κ³  μ„€κ³„ν•œ κ²Œμ•„λ‹ˆλ‹€. ν•˜μ§€λ§Œ μƒμ„±μžλ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ κΈ°λ³Έ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ€€λ‹€. 즉, λ§€κ°œλ³€μˆ˜λ₯Ό 받지 μ•ŠλŠ” public μƒμ„±μžκ°€ λ§Œλ“€μ–΄μ§€λ©°, μ‚¬μš©μžλŠ” 이 μƒμ„±μžκ°€ μžλ™ μƒμ„±λœ 것인지 ꡬ뢄할 수 μ—†λ‹€.

  • 좔상 클래슀둜 λ§Œλ“œλŠ” κ²ƒμœΌλ‘œλŠ” μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 막을 수 μ—†λ‹€. ν•˜μœ„ 클래슀λ₯Ό λ§Œλ“€μ–΄ μΈμŠ€ν„΄μŠ€ν™”ν•˜λ©΄ κ·Έλ§Œμ΄λ‹€. 이λ₯Ό λ³Έ μ‚¬μš©μžλŠ” μƒμ†ν•΄μ„œ μ“°λΌλŠ” 뜻으둜 μ˜€ν•΄ν•  수 μžˆμœΌλ‹ˆ 더 큰 λ¬Έμ œλ‹€.

  • μ»΄νŒŒμΌλŸ¬κ°€ κΈ°λ³Έ μƒμ„±μžλ₯Ό λ§Œλ“œλŠ” κ²½μš°λŠ” 였직 λͺ…μ‹œλœ μƒμ„±μžκ°€ 없을 λ•ŒλΏμ΄λ‹ˆ private μƒμ„±μžλ₯Ό μΆ”κ°€ν•˜λ©΄ 클래슀의 μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 막을 수 μžˆλ‹€.

  • 이 방식은 상속을 λΆˆκ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” νš¨κ³Όλ„ μžˆλ‹€. λͺ¨λ“  μƒμ„±μžλŠ” λͺ…μ‹œμ μ΄λ“  λ¬΅μ‹œμ μ΄λ“  μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κ²Œ λ˜λŠ”λ°, 이λ₯Ό private으둜 μ„ μ–Έν–ˆμœΌλ‹ˆ ν•˜μœ„ ν΄λž˜μŠ€κ°€ μƒμœ„ 클래슀의 μƒμ„±μžμ— μ ‘κ·Όν•  길이 λ§‰ν˜€λ²„λ¦°λ‹€.