Development
μ μ ν©ν 리 λ©μλλ‘ λ©λͺ¨λ¦¬ μλΌλ λ²
8/28/2024

μ μ ν©ν 리 λ©μλ
μ μ ν©ν 리 λ©μλλ λ¨μν μμ±μλ‘ κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μ λΉνμ¬ μ¬λ¬κ°μ§ μ΄μ μ μ 곡ν μ μμ΅λλ€.
public interface List<E> extends Collection<E> {
static <E> List<E> of() {
return (List<E>) ImmutableCollections.EMPTY_LIST;
}
static <E> List<E> of(E e1) {
return new ImmutableCollections.List12<>(e1);
}
static <E> List<E> of(E e1, E e2) {
return new ImmutableCollections.List12<>(e1, e2);
}
...
}1. λ©μλμ μ΄λ¦μ ν΅ν μλ―ΈλΆμ¬ κ°λ₯
μμ±μμ μ΄λ¦μ ν΄λμ€ μ΄λ¦μ λ°λ₯Ό μ λ°μ μμ§λ§, μ μ ν©ν 리 λ©μλλ λ§ κ·Έλλ‘ 'λ©μλ'μ΄λ―λ‘ μ΄λ¦μ κ°μ§ μ μμΌλ©°, μ΄λ¦μ ν΅ν΄ κ°μ²΄ μμ±μ λͺ©μ λ±μ λν μλ―Έλ₯Ό λΆμ¬ν μ μμ΅λλ€.
2. μΈμ€ν΄μ€ μμ±μ λν κΆνμ ν΄λμ€ λ΄λΆλ‘.
μμ±μλ₯Ό νΈμΆνλ€λ©΄ κ·Έ λμμμ μ€λ₯κ° λ°μνμ§ μλ ν κ°μ²΄λ νμ μμ±λ©λλ€. ν νΈ, μ μ ν©ν 리 λ©μλλ μΈμ€ν΄μ€μ μμ± μ¬λΆλ κ·Έ μμμ κ²°μ ν μ μμ΅λλ€. μ±κΈν€ ν¨ν΄μμ κ΄μ΅μ μΌλ‘ μ°μ΄λ μ μ ν©ν 리 λ©μλμΈ getInstance κ° λνμ μΈ μμμ
λλ€.
3. λ€νμ±μ μ κ·Ήμ μΌλ‘ νμ© κ°λ₯
μμ±μμ λ°ν νμ μ ν΄λΉ ν΄λμ€μ νμ μΌλ‘ μ νλμ§λ§, μ μ ν©ν 리 λ©μλλ -- λ§ κ·Έλλ‘ 'λ©μλ'μΌ λΏμ΄λ―λ‘ -- νμ νμ κ°μ²΄λ₯Ό μμ±ν΄μ λ°νν μ μμ΅λλ€. μ΄λ¬ν ꡬ쑰λ₯Ό ν΅ν΄ λ΄λΆ ꡬνμ μ¨κΈ°κΈ°μ μ©μ΄νλ©°, μΆν 릴리μ¦μμ λ€λ₯Έ νμ μ λ°ννλλΌλ ν΄λΌμ΄μΈνΈ μ½λμ μν₯μ μ£Όμ§ μμ μ μμ΅λλ€.
Integer.valueOf()
Integer i1 = Integer.valueOf(100);
Integer i2 = Integer.valueOf(100);
System.out.println(i1 == i2);
Integer i3 = Integer.valueOf(1000);
Integer i4 = Integer.valueOf(1000);
System.out.println(i3 == i4);μ μ½λλ μμΉλ§ λ€λ₯΄κ³ λμΌνμ§λ§ μμμλΆν° true, false λΌλ μλ‘ λ€λ₯Έ κ²°κ³Όλ₯Ό κ°μ§λλ€. κ·Έ μ΄μ λ valueOfλΌλ Integer λνΌ ν΄λμ€μ μ μ ν©ν 리 λ©μλκ° λ΄λΆμ μΌλ‘ μΊμ±μ μννκΈ° λλ¬Έμ
λλ€.
@IntrinsicCandidate
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}valueOfλ νλΌλ―Έν°κ° IntegerCacheμ λ²μ λ΄μ μλμ§ κ²μ¬ν λ€, μ ν¨ν λ²μ λ΄μ μλ€λ©΄ μΊμμμ ν΄λΉ κ°μ²΄λ₯Ό κΊΌλ΄μ λ°ννκ³ , κ·Έλ μ§ μλ€λ©΄ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±ν©λλ€. μΊμ λ²μμ κΈ°λ³Έκ°μ 127μ΄λ―λ‘, λ°λΌμ μ μ½λλ 100μΈ κ²½μ° λ κ°μ²΄κ° μλ‘ κ°μ κ°μ²΄μ΄λ©°, 1000μΈ κ²½μ° μλ‘ λ€λ₯Έ κ°μ²΄λΌλ κ²°κ³Όλ₯Ό λ°ννμμ΅λλ€.
μ΄μ κ°μ΄ μλ°λ νλ‘κ·Έλ¨ λ΄μ μμ£Ό μ°μΌ λ°μ΄ν°λ₯Ό μΊμ±ν΄λκ³ μ¬μ¬μ©ν¨μΌλ‘μ¨ κ³΅κ°μ μλΌλ κ΅¬μ‘°λ‘ μμ±λμ΄μμ΅λλ€. μ μ ν©ν 리 λ©μλλ₯Ό μ¬μ©νμ¬ μΈμ€ν΄μ€ μμ±μ κ΄λ¦¬νλ μ§κ΄μ μΈ μμλΌκ³ μκ°ν΄ 곡μ νκ² λμμ΅λλ€.