Skip to content

Latest commit

Β 

History

History
78 lines (54 loc) Β· 1.87 KB

File metadata and controls

78 lines (54 loc) Β· 1.87 KB

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

λ©”μ„œλ“œ μ°Έμ‘°

// λžŒλ‹€ ν‘œν˜„
map.merge(key, 1, (cnt, incr) -> Integer.sum(cnt, incr));

// λ©”μ„œλ“œ 참쑰둜 λ³€ν™˜
map.merge(key, 1, Integer::sum);
  • λžŒλ‹€μ˜ λ§€κ°œλ³€μˆ˜κ°€ 정적 λ©”μ„œλ“œμ˜ λ§€κ°œλ³€μˆ˜λ‘œ κ·ΈλŒ€λ‘œ μ œκ³΅λ˜λŠ” 경우, 이λ₯Ό λ©”μ„œλ“œ μ°Έμ‘° ν˜•μ‹μœΌλ‘œ λ³€κ²½ν•  수 있음

λ©”μ„œλ“œ 참쑰의 μž₯점

  • μ§§κ³  κ°„κ²°
  • λ©”μ„œλ“œμ˜ 이름을 톡해 κΈ°λŠ₯을 λ‚˜νƒ€λ‚Ό 수 있으며, 이 λ©”μ„œλ“œλ₯Ό λ¬Έμ„œν™”ν•  μˆ˜λ„ 있음
    • λžŒλ‹€λŠ” λ¬Έμ„œν™”κ°€ λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” 단점이 μžˆμ—ˆμŒ

λ©”μ„œλ“œ 참쑰의 단점

  • λ§€κ°œλ³€μˆ˜μ˜ μ΄λ¦„μœΌλ‘œ 무언가 νŠΉμ§•μ„ λ‚˜νƒ€λ‚΄μ•Ό ν•œλ‹€λ©΄ λžŒλ‹€λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λŠ” 편이 μ’‹μŒ
  • λ©”μ„œλ“œ μ°Έμ‘°λŠ” 간결함과 λͺ…확성을 μœ„ν•΄ μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ, λ©”μ„œλ“œ 참쑰의 μ‚¬μš©μ΄ 였히렀 이λ₯Ό ν•΄μΉ˜λŠ” κ²½μš°μ—λŠ” λžŒλ‹€λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŒ

λ©”μ„œλ“œ 참쑰의 μœ ν˜•

  1. (μ•žμ˜ μ˜ˆμ‹œμ— ν•΄λ‹Ή) 정적 λ©”μ„œλ“œλ₯Ό κ°€λ¦¬ν‚€λŠ” λ©”μ„œλ“œ μ°Έμ‘°

    // λžŒλ‹€
    (p1, p2, ...) -> Class.method(p1, p2, ...);
    
    // λ©”μ„œλ“œ μ°Έμ‘°
    Class::method
  2. ν•œμ •μ  μΈμŠ€ν„΄μŠ€ μ°Έμ‘°

    // λžŒλ‹€
    e -> instance.method(e)
    
    // λ©”μ„œλ“œ μ°Έμ‘°
    instance::method
    • instance와 e의 νƒ€μž…μ΄ 같을 κ²½μš°μ—λ§Œ λ™μž‘
  3. λΉ„ν•œμ •μ  μΈμŠ€ν„΄μŠ€ μ°Έμ‘°

    // λžŒλ‹€
    str -> str.toLowerCase()
    
    // λ©”μ„œλ“œ μ°Έμ‘°
    String::toLowerCase
    • μ „λ‹¬λ°›λŠ” 인자의 non-static λ©”μ„œλ“œλ₯Ό 호좜
  4. 클래슀의 μƒμ„±μž

    // λžŒλ‹€
    () -> new MyClass()
    
    // λ©”μ„œλ“œ μ°Έμ‘°
    MyClass::new
  5. λ°°μ—΄μ˜ μƒμ„±μž

    // λžŒλ‹€
    len -> new int[len]
    
    // λ©”μ„œλ“œ μ°Έμ‘°
    int[]::new