item 68 leekyunghee - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
μΌλ°μ μΌλ‘ ν΅μ©λλ λͺ λͺ κ·μΉμ λ°λ₯΄λΌ
μ½λμ κ°λ μ±, μλλ₯Ό νμ νκΈ° μν¨
μ² μ κ·μΉμ ν¨ν€μ§, ν΄λμ€, μΈν°νμ΄μ€, λ©μλ, νλ, νμ λ³μμ μ΄λ¦μ λ€λ£¬λ€.
- ν¨ν€μ§μ λͺ¨λ μ΄λ¦μ κ° μμλ₯Ό μ (.)μΌλ‘ ꡬλΆνμ¬ κ³μΈ΅μ μΌλ‘ μ§λλ€. μμλ€μ λͺ¨λ μλ¬Έμ μνλ²³
edu.cmu, com.google, org.eff μμΌλ‘ μ‘°μ§μ λ°κΉ₯μμλ μ¬μ©λ ν¨ν€μ§λΌλ©΄ μ‘°μ§μ μΈν°λ· λλ©μΈ μ΄λ¦μ μμμΌλ‘ μ¬μ©νλ€. μμΈμ μΌλ‘ νμ€ λΌμ΄λΈλ¬λ¦¬μ μ νμ ν¨ν€μ§λ€μ κ°κ° javaμ javaxλ‘ μμνλ€.
- λλ©μΈ μ΄λ¦μ ν¨ν€μ§ μ΄λ¦μ μ λμ΄λ‘ λ³ννλ μμΈν κ·μΉμ μλ° μΈμ΄ λͺ μΈ (JLS, 6.1) μ°Έκ³
ν¨ν€μ§ μ΄λ¦μ λλ¨Έμ§λ ν΄λΉ ν¨ν€μ§λ₯Ό μ€λͺ νλ νλ μ΄μμ μμλ‘ μ΄λ€μ§λ€.
- κ° μμλ μΌλ°μ μΌλ‘ 8μ μ΄νμ 짧μ λ¨μ΄λ‘ νλ€
utilities 보λ€λ utilμ²λΌ μλ―Έκ° ν΅νλ μ½μ΄λ₯Ό μΆμ²νλ€.
- μΈν°λ· λλ©μΈ μ΄λ¦ λ€μ μμ νλλ§ λΆμΈ ν¨ν€μ§κ° λ§μ§λ§ λ§μ κΈ°λ₯μ μ 곡νλ κ²½μ°μ κ³μΈ΅μ λλ λ λ§μ μμλ‘ κ΅¬μ±ν΄λ μ’λ€.
- μλ₯Ό λ€μ΄ java.utilμ java.util.concurrent.atomicκ³Ό κ°μ΄ κ·Έ λ°μ μλ§μ ν¨ν€μ§λ₯Ό κ°μ§κ³ μλ€.
- μλ°κ° ν¨ν€μ§ κ³μΈ΅μ κ΄ν΄ μΈμ΄ μ°¨μμμ μ§μνλ 건 κ±°μ μμ§λ§ μ΄μ¨λ μ΄μ²λΌ νλΆμ ν¨ν€μ§λ₯Ό νμ ν¨ν€μ§λΌ λΆλ₯Έλ€.
(μ΄κ±° νμ κ³Ό μ λν μ΄μ μ ν¬ν¨ν΄) ν΄λμ€μ μΈν°νμ΄μ€μ μ΄λ¦μ νλ μ΄μμ λ¨μ΄λ‘ μ΄λ€μ§λ©°, κ° λ¨μ΄λ λλ¬Έμλ‘ μμνλ€.
- (List, FutherTask λ±) μ¬λ¬ λ¨μ΄μ 첫κΈμλ§ λ΄ μ½μλ max, minμ²λΌ λ리 ν΅μ©λλ μ€μλ§μ μ μΈνκ³ λ λ¨μ΄λ₯Ό μ€μ¬ μ°μ§ μλλ‘ νλ€.
λ©μλμ νλ μ΄λ¦μ 첫 κΈμλ₯Ό μλ¬Έμλ‘ μ΄λ€λ μ λ§ λΉΌλ©΄ ν΄λμ€ λͺ λͺ κ·μΉκ³Ό κ°λ€.(remove, ensureCapacity) λ±
- 첫 λ¨μ΄κ° μ½μλΌλ©΄ λ¨μ΄ μ μ²΄κ° μλ¬Έμμ¬μΌ νλ€.
μμ νλλ μμΈ
- μμ νλλ κ°μ΄ λΆλ³μΈ static final νλλ₯Ό λ§νλ€.
- μμ νλλ₯Ό ꡬμ±νλ λ¨μ΄λ λͺ¨λ λλ¬Έμλ‘ λ¨μ΄ μ¬μ΄λ λ°μ€λ‘ ꡬλΆνλ€. (VALUES, NEGATIVE_INFINITY) λ±
μ§μλ³μμλ λ€λ₯Έ λ©€λ²μ λΉμ·ν λͺ λͺ κ·μΉμ΄ μ μ©λλ€.
- λ¨ μ½μ΄λ₯Ό μ¨λ μ’λ€.
- μ½μ΄λ₯Ό μ¨λ κ·Έ λ³μκ° μ¬μ©λλ λ¬Έλ§₯μμ μλ―Έλ₯Ό μ½κ² μ μΆν μ μκΈ° λλ¬Έμ΄λ€.
- μ λ ₯ 맀κ°λ³μλ μ§μλ³μμ νλ νμ§λ§ λ©μλ μ€λͺ λ¬ΈμμκΉμ§ λ±μ₯νλ λ§νΌ μΌλ° μ§μλ³μ 보λ€λ μ κ²½μ μ¨μΌνλ€.
νμ 맀κ°λ³μ μ΄λ¦μ λ³΄ν΅ ν λ¬Έμλ‘ νννλ€.
λλΆλΆμ λ€μμ λ€μ―κ°μ§ μ€ νλλ€
μμμ νμ μ T, 컬λ μ μμμ νμ μ E, 맡μ ν€μ κ°μλ K,V, λ©μλμ λ°ν νμ μλ Rμ μ¬μ©νλ€.
κ°μ²΄λ₯Ό μμ±ν μ μλ ν΄λμ€(μ΄κ±° νμ ν¬ν¨)μ μ΄λ¦μ λ³΄ν΅ λ¨μ λͺ μ¬λ λͺ μ¬κ΅¬λ₯Ό μ¬μ©νλ€. (Thread, PriorityQueue, ChessPiece λ±)
κ°μ²΄λ₯Ό μμ±ν μ μλ ν΄λμ€(μμ΄ν 4) λ³΄ν΅ λ³΅μν λͺ μ¬λ‘ μ§λλ€. (Collectors, Collections λ±)
μΈν°νμ΄μ€ μ΄λ¦μ ν΄λμ€μ λκ°μ΄ μ§κ±°λ (Collection, Comparator λ±) able, ibleλ‘ λλλ νμ©μ¬λ‘ μ§λλ€. (Runnable, Iterable, Accessible)
μ λν μ΄μ μ μλ λ€μνκ² νμ©λμ΄ μ§λ°°μ μΈ κ·μΉμ΄ μμ΄ λͺ μ¬, λμ¬, μ μΉμ¬, νμ©μ¬κ° λ루 μ°μΈλ€. (BindingAnnotation, Inject, ImplementedBy, Singleton λ±)
μ΄λ€ λμμ μννλ λ©μλμ μ΄λ¦μ λμ¬λ (λͺ©μ μ΄λ₯Ό ν¬ν¨ν) λμ¬κ΅¬λ‘ μ§λλ€ (append, drawImage)
- boolean κ°μ λ°ννλ λ©μλλΌλ©΄ λ³΄ν΅ isλ hasλ‘ μμνκ³ λͺ μ¬λ λͺ μ¬κ΅¬ νΉμ νμ©μ¬λ‘ κ°λ₯νλ μ무 λ¨μ΄λ κ΅¬λ‘ λλλλ‘ μ§λλ€.
isDigit, isProbablePrime, isEmpty, isEnabled, hasSiblings λ±)
λ°ν νμ μ΄ booleanμ΄ μλκ±°λ ν΄λΉ μΈμ€ν΄μ€μ μμ±μ λ°ννλ λ©μλμ μ΄λ¦μ λ³΄ν΅ λͺ μ¬, λͺ μ¬κ΅¬, νΉμ getμΌλ‘ μμνλ λμ¬κ΅¬λ‘ μ§λλ€. (size, hasCode, getTime λ±)
μΈλ²μ§Έ νμ, μ¦ getμΌλ‘ μμνλ ννλ§ μ¨μΌ νλ€λ μ£Όμ₯λ μμ§λ§ κ·Όκ±°κ° λΉμ½
- κ΄λ‘μ²λΌ μ¬μ©νκ³ νΉλ³ν λ©μλ μ΄λ¦μ κ°μ§λ λͺκ°μ§
μμ΄ν 6, κ°μ²΄μ νμ μ λ°κΏμ λ€λ₯Έ νμ μ λ λ€λ₯Έ κ°μ²΄λ₯Ό λ°ννλ μΈμ€ν΄μ€ λ©μλμ μ΄λ¦μ λ³΄ν΅ toType, toString, toArray λ±
- κ°μ²΄μ λ΄μ©μ λ€λ₯Έ λ·°λ‘ λ³΄μ¬μ£Όλ λ©μλμ μ΄λ¦μ asType (asList λ±)
μμ΄ν 1, μ μ ν©ν°λ¦¬μ μ΄λ¦μ λ€μνμ§λ§ from, of, valueOf, instance, getInstance, newInstance, getType