Java/πŸ“• Effective Java

Java/πŸ“• Effective Java

[πŸ“• Effective Java] λͺ¨λ“  객체의 곡톡 λ©”μ„œλ“œ δΈ‹

13. clone μž¬μ •μ˜λŠ” μ£Όμ˜ν•΄μ„œ 진행Cloneable : λ³΅μ œν•΄λ„ λ˜λŠ” ν΄λž˜μŠ€μž„μ„ λͺ…μ‹œν•˜λŠ” μš©λ„μ˜ μΈν„°νŽ˜μ΄μŠ€Object의 protected λ©”μ„œλ“œμΈ clone의 λ™μž‘ 방식을 κ²°μ • Cloneable은 μƒμœ„ ν΄λž˜μŠ€μ— μ •μ˜λœ protected λ©”μ„œλ“œμ˜ λ™μž‘ 방식을 변경상속 κ΄€κ³„μ˜ 두 클래슀 쀑 ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ super.clone을 ν˜ΈμΆœν•œλ‹€λ©΄ 잘λͺ»λœ 클래슀의 객체가 λ§Œλ“€μ–΄μ§ˆ 수 있음 πŸ‘‰ 클래슀 Bκ°€ 클래슀 Aλ₯Ό 상속할 λ•Œ, ν•˜μœ„ 클래슀인 B의 clone은 B νƒ€μž… 객체λ₯Ό λ°˜ν™˜ν•΄μ•Ό 함. ν•˜μ§€λ§Œ A의 clone이 new A(...)둜 μƒμ„±ν•œ 객체λ₯Ό λ°˜ν™˜ν•œλ‹€λ©΄, B의 clone도 A νƒ€μž… 객체λ₯Ό λ°˜ν™˜.✳️ κ°€λ³€ 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” Stack 클래슀 λ³΅μ œν•˜κΈ° public class Stack { private..

Java/πŸ“• Effective Java

[Effective Java] λͺ¨λ“  객체의 곡톡 λ©”μ„œλ“œ 上

10. equalsλŠ” 일반 κ·œμ•½μ„ μ§€μΌœ μž¬μ •μ˜equalsλ₯Ό μž¬μ •μ˜ν•˜λŠ” κ²½μš°λŠ” ...πŸ‘‰ 두 객체가 물리적으둜 같은지(객체 식별성)κ°€ μ•„λ‹ˆλΌ 논리적 λ™μΉ˜μ„±μ„ 확인해야 ν•˜λŠ”λ°, μƒμœ„ 클래슀의 equalsκ°€ 논리적 λ™μΉ˜μ„±μ„ λΉ„κ΅ν•˜λ„λ‘ μž¬μ •μ˜λ˜μ§€ μ•Šμ„ λ•Œ  βœ³οΈ 일반 κ·œμ•½ λŒ€μΉ­μ„± : x.equals(y)κ°€ true이면, y.equals(x)도 true좔이성 : x.equals(y)κ°€ true이고, y.equals(z)도 true이면, x.equals(z)도 true일관성 : x.equals(y)λ₯Ό λ°˜λ³΅ν•΄μ„œ ν˜ΈμΆœν•˜λ©΄ 항상 true λ˜λŠ” false λ°˜ν™˜βœ³οΈ equals λ©”μ„œλ“œ κ΅¬ν˜„ 방법== μ—°μ‚°μž μ‚¬μš©ν•΄ μž…λ ₯이 자기 μžμ‹ μ˜ 참쑰인지 확인 πŸ‘‰ 자기 μžμ‹ μ΄λ©΄ true λ°˜ν™˜instanceof μ—°μ‚°μžλ‘œ μž…λ ₯이 μ˜¬λ°”λ₯Έ 타..

Java/πŸ“• Effective Java

[πŸ“• Effective Java] 객체 생성과 파괴 δΈ‹

4. μΈμŠ€ν„΄μŠ€ν™”λ₯Ό λ§‰μœΌλ €λ©΄ private μƒμ„±μž μ‚¬μš©   5. μžμ›μ„ 직접 λͺ…μ‹œν•˜μ§€ 말고 의쑴 객체 μ£Όμž… μ‚¬μš© μ‚¬μš©ν•˜λŠ” μžμ›μ— 따라 λ™μž‘μ΄ λ‹¬λΌμ§€λŠ” ν΄λž˜μŠ€μ—λŠ” 정적 μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λ‚˜ μ‹±κΈ€ν„΄ 방식 적합 XπŸ‘‰ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ μƒμ„±μžμ— ν•„μš”ν•œ μžμ›μ„ λ„˜κ²¨μ£ΌλŠ” 방식 = 의쑴 객체 μ£Όμž…   μƒμ„±μžμ— μžμ› νŒ©ν† λ¦¬λ₯Ό λ„˜κ²¨μ€Œβœ¨ νŒ©ν† λ¦¬πŸ‘‰ ν˜ΈμΆœν•  λ•Œλ§ˆλ‹€ νŠΉμ • νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜λ³΅ν•΄μ„œ λ§Œλ“€μ–΄μ£ΌλŠ” 객체 public class SpellChecker{ private final Lexicon dictionary; public SpellChecker(Lexicon dictionary){ this.dictionary = Objects.requireNonNull(dictionary); } ..

Java/πŸ“• Effective Java

[πŸ“• Effective Java] 객체 생성과 파괴 上

1. μƒμ„±μž λŒ€μ‹  정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ ! πŸ”Ή 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ (static factory method) πŸ‘‰ ν•΄λ‹Ή 클래슀의 μΈμŠ€ν„΄μŠ€ λ°˜ν™˜μ΄λ―Έ μΊμ‹œλœ 객체 λ°˜ν™˜ν•˜μ—¬ 객체 생성 μ€„μž„πŸ‘ μž₯점이름을 κ°€μ§ˆ 수 μžˆμ–΄μ„œ λ°˜ν™˜λ  객체의 νŠΉμ„±μ„ μ œλŒ€λ‘œ μ„€λͺ… κ°€λŠ₯ ex) BigInteger(int, int, Random) vs BigInteger.probablePrime πŸ‘‰ λ‘˜ 쀑 '값이 μ†Œμˆ˜μΈ BigIntegerλ₯Ό λ°˜ν™˜ν•˜λ‹€'λŠ” 의미λ₯Ό 더 잘 μ„€λͺ…ν•  수 μžˆλŠ” 것을 λ°”λ‘œ νŒŒμ•… κ°€λŠ₯ ν•œ ν΄λž˜μŠ€μ— μ‹œκ·Έλ‹ˆμ²˜κ°€ 같은 μƒμ„±μžκ°€ μ—¬λŸ¬ 개 ν•„μš”ν•  μ‹œ 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό ν™œμš©ν•˜λŠ” 것이 λ”μš± 유용public class Account { private String owner; private double balance; ..

soogoori
'Java/πŸ“• Effective Java' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (2 Page)