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
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
4. μΈμ€ν΄μ€νλ₯Ό λ§μΌλ €λ©΄ private μμ±μ μ¬μ© 5. μμμ μ§μ λͺ
μνμ§ λ§κ³ μμ‘΄ κ°μ²΄ μ£Όμ
μ¬μ© μ¬μ©νλ μμμ λ°λΌ λμμ΄ λ¬λΌμ§λ ν΄λμ€μλ μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ±κΈν΄ λ°©μ μ ν© Xπ μΈμ€ν΄μ€λ₯Ό μμ±ν λ μμ±μμ νμν μμμ λ겨주λ λ°©μ = μμ‘΄ κ°μ²΄ μ£Όμ
μμ±μμ μμ ν©ν 리λ₯Ό λ겨μ€β¨ ν©ν 리π νΈμΆν λλ§λ€ νΉμ νμ
μ μΈμ€ν΄μ€λ₯Ό λ°λ³΅ν΄μ λ§λ€μ΄μ£Όλ κ°μ²΄ public class SpellChecker{ private final Lexicon dictionary; public SpellChecker(Lexicon dictionary){ this.dictionary = Objects.requireNonNull(dictionary); } ..
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; ..