Home [Effective Java] Item 4
Post
Cancel

[Effective Java] Item 4

Effective Java - Item 4

β“μΈμŠ€ν„΄μŠ€ν™”λž€

λ©”μ†Œλ“œμ™€ λ³€μˆ˜λ₯Ό λͺ¨μ•„놓은 것에 λΆˆκ³Όν•œ 클래슀λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄λ‹Ή 클래슀 νƒ€μž…μ˜ 객체λͺ…을 μ„ μ–Έν•˜κ³  값을 λ„£μ–΄ ν•΄λ‹Ή 클래슀의 λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš© κ°€λŠ₯ν•œ μƒνƒœλ‘œ λ§Œλ“œλŠ” 것

κΈ°λ³Έ νƒ€μž… κ°’μ΄λ‚˜ λ°°μ—΄ κ΄€λ ¨ λ©”μ„œλ“œλ₯Ό λͺ¨μ•„ 놓을 λ•Œ java.lang.Math, java.util.Arrays

νŠΉμ • μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” 객체λ₯Ό μƒμ„±ν•΄μ£ΌλŠ” 정적 λ©”μ†Œλ“œ(ν˜Ήμ€ νŒ©ν† λ¦¬)λ₯Ό λͺ¨μ•„ 놓을 λ•Œ java.util.Collections

final 클래슀λ₯Ό μƒμ†ν•΄μ„œ ν•˜μœ„ ν΄λž˜μŠ€μ— λ©”μ„œλ“œλ₯Ό λ„£λŠ” 것은 λΆˆκ°€λŠ₯ ν•˜κΈ° λ•Œλ¬Έμ— final ν΄λž˜μŠ€μ™€ κ΄€λ ¨ν•œ λ©”μ†Œλ“œλ₯Ό λͺ¨μ•„ 놓을 λ•Œ

μœ„μ˜ 세가지 κ²½μš°μ— 정적 ν•„λ“œμ™€ 정적 λ©”μ†Œλ“œλ§Œμ„ 가진 클래슀λ₯Ό 생성할 ν•„μš”κ°€ μžˆλ‹€.

μƒμ„±μžλ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ κΈ°λ³Έ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ£ΌκΈ° λ•Œλ¬Έμ— μ›μΉ˜μ•ŠλŠ” public μƒμ„±μžκ°€ λ§Œλ“€μ–΄μ§€κ³  μ‚¬μš©μžλŠ” μƒμ„±μžκ°€ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ§Œλ“  μƒμ„±μžμΈμ§€ μ•„λ‹Œμ§€λ₯Ό ꡬ뢄할 μˆ˜κ°€ μ—†λ‹€.

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

이런 κ²½μš°μ— μƒμ„±μžμ— private μƒμ„±μžλ₯Ό μΆ”κ°€ν•œλ‹€.

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

  • μ½”λ“œ
1
2
3
4
5
6
7
public class UtilityClass {

    private UtilityClass() {
    	throw new AssertionError();
    }
    ...
}

β†’ 무쑰건 Errorλ₯Ό λ˜μ Έμ€˜μ•Όν•  ν•„μš”λŠ” μ—†μœΌλ‚˜ 같은 ν΄λž˜μŠ€λ‚΄μ—μ„œ μ‹€μˆ˜λ‘œλΌλ„ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 없도둝 ν•΄μ€€λ‹€.

이런 방식을 μ‚¬μš©ν•œλ‹€λ©΄ 상속 μ—­μ‹œ λΆˆκ°€λŠ₯ν•˜λ‹€.

λͺ¨λ“  μƒμ„±μžλŠ” μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κ²Œ λ˜μ–΄μžˆλŠ”λ° μ ‘κ·Ό κΆŒν•œμ„ private둜 μ„ μ–Έν•œλ‹€λ©΄ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μƒμœ„ 클래슀의 μƒμ„±μžμ— μ ‘κ·Όν•  방법이 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

This post is licensed under CC BY 4.0 by the author.

[Effective Java] Item 3

[Effective Java] Item 5