Item 43. Method Reference

λžŒλ‹€λ³΄λ‹€λŠ” λ©”μ„œλ“œ μ°Έμ‘°λ₯Ό μ‚¬μš©ν•˜λΌ

λžŒλ‹€λŠ” 읡λͺ… ν΄λž˜μŠ€λ³΄λ‹€ κ°„κ²°ν•˜λ‹€λŠ” 큰 μž₯점이 μžˆλŠ”λ°, 이보닀 더 κ°„κ²°ν•˜κ²Œ ν•˜λŠ” λ©”μ„œλ“œ μ°Έμ‘°λΌλŠ” 방법이 μžˆλ‹€.

/*
merge λ©”μ„œλ“œλŠ” ν‚€, κ°’, ν•¨μˆ˜λ₯Ό 인수둜 λ°›μ•„
ν‚€κ°€ μ—†μœΌλ©΄ 주어진 킀와 κ°’μœΌλ‘œ μƒˆλ‘œμš΄ ν•­λͺ©μ„ μΆ”κ°€ν•˜κ³ 
ν‚€κ°€ 이미 μ‘΄μž¬ν•˜λ©΄ κΈ°μ‘΄ κ°’κ³Ό 주어진 값을 ν•©μ³μ„œ μƒˆλ‘œμš΄ 값을 μ €μž₯ν•œλ‹€.
 */
class Example {
    public static void main(String[] args) {
        // λžŒλ‹€
        map.merge(key, 1, (count, incr) -> count + incr);

        // λ©”μ„œλ“œ μ°Έμ‘°
        map.merge(key, 1, Integer::sum);
    }
}

λžŒλ‹€μ‹μ„ 보면 count와 incr 뢀뢄이 크게 ν•˜λŠ” 일 없이 λ‹¨μˆœνžˆ 두 값을 λ”ν•˜λŠ” 것을 μ•Œ 수 μžˆλ‹€. μ΄λŸ¬ν•œ 뢀뢄을 Integer 클래슀(κ·Έ 외에 λͺ¨λ“  κΈ°λ³Έ λ°•μ‹± νƒ€μž…)은 두 값을 λ”ν•˜λŠ” 정적 λ©”μ„œλ“œ sum으둜 λŒ€μ²΄ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ λ§€κ°œλ³€μˆ˜ 이름 μžμ²΄κ°€ μ½”λ“œ μƒμ—μ„œ 사라지기 λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž˜λ¨Έμ— 따라 가독성이 λ–¨μ–΄μ§ˆ 수 μžˆλ‹€.

λ©”μ„œλ“œ μ°Έμ‘° μœ ν˜•

λ©”μ„œλ“œ μ°Έμ‘° μœ ν˜•μ€ λ‹€μ„― κ°€μ§€λ‘œ, κ°€μž₯ ν”ν•œ μœ ν˜•μ€ μœ„ μ˜ˆμ‹œμ—μ„œ μ‚¬μš©ν•œ 정적 λ©”μ„œλ“œ 참쑰이닀. λ©”μ„œλ“œ μ°Έμ‘° μœ ν˜•μ€ μ•„λž˜μ™€ κ°™λ‹€.

λ©”μ„œλ“œ μ°Έμ‘° μœ ν˜•μ˜ˆμ‹œλžŒλ‹€

정적

Integer::parseInt

str -> Integer.parseInt(str)

ν•œμ •μ (μΈμŠ€ν„΄μŠ€)

Instant.now()::isAfter

Instant then = Instant.now(); t -> then.isAfter(t)

λΉ„ν•œμ •μ (μΈμŠ€ν„΄μŠ€)

String::toLowerCase

str -> str.toLowerCase()

클래슀 μƒμ„±μž

TreeMap<K,V>::new

() -> new TreeMap<K,V>

λ°°μ—΄ μƒμ„±μž

int[]::new

len -> new int[len]

Last updated