๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’Ž/Java

[Java] ๋žŒ๋‹ค์‹

by dar0m! 2021. 8. 10.

๋žŒ๋‹ค์‹(Lambda Expression)

ํ•จ์ˆ˜์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์œผ๋กœ 'y = f(x)' ํ˜•ํƒœ์˜ ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ด๋‹ค.
์ฆ‰, ๋žŒ๋‹ค์‹์€ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ์‹(expression)์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.

ํ•จ์ˆ˜๋ฅผ ๋žŒ๋‹ค์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์ด ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋žŒ๋‹ค์‹์€ ์ต๋ช… ํ•จ์ˆ˜(Anonymous Function)์˜ ํ•œ ์ข…๋ฅ˜๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฐ” 8๋ถ€ํ„ฐ ์ง€์›ํ•˜๋ฉฐ ์ž๋ฐ”๋Š” ๋žŒ๋‹ค์‹์„ ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

'๋žŒ๋‹ค์‹ → ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ฝ”๋“œ ๋ธ”๋ก → ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด'

  • ์ต๋ช… ํ•จ์ˆ˜(Anonymous Function) : ํ•จ์ˆ˜์˜ ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜๋กœ, ์ต๋ช… ํ•จ์ˆ˜๋“ค์€ ๋ชจ๋‘ ์ผ๊ธ‰ ๊ฐ์ฒด์ด๋‹ค.
    • ์ผ๊ธ‰ ๊ฐ์ฒด์ธ ํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๋Š” ๋“ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
      1. ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์•ˆ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
      2. ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ
      3. ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      4. ํ• ๋‹น์— ์‚ฌ์šฉ๋œ ์ด๋ฆ„๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณ ์œ ํ•œ ๊ตฌ๋ณ„์ด ๊ฐ€๋Šฅ
  • ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค : ํ•œ ๊ฐœ์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค
    • static, default ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์–ด๋„ ๊ดœ์ฐฎ๋‹ค.
  • ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด : ์ด๋ฆ„์ด ์—†๋Š” ๊ฐ์ฒด๋กœ, ํ•œ๋ฒˆ์“ฐ๊ณ  ๋ฒ„๋ฆด ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ต๋ช… ๊ตฌํ˜„๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ผํšŒ์„ฑ์ด๋ฉฐ, ์žฌ์‚ฌ์šฉํ•  ํ•„์š” ์—†๊ณ  ํŒŒ์ผ๋‹จ์œ„์˜ ๊ด€๋ฆฌ ๋Œ€์ƒ์ด ์•„๋‹Œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 
    • ์ธํ„ฐํŽ˜์ด์Šค๋ช… ๋ณ€์ˆ˜ = new ์ธํ„ฐํŽ˜์ด์Šค๋ช…() {};

์ž‘์„ฑ ๋ฐฉ๋ฒ•

// ๊ธฐ๋ณธ ํ˜•์‹
(ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜, ...) -> {์‹คํ–‰๋ฌธ; ... }

// 1. ๋งค๊ฐœ ํƒ€์ž…์€ ๋Ÿฐํƒ€์ž„์‹œ์— ๋Œ€์ž…๊ฐ’์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žต ๊ฐ€๋Šฅ
(a) -> { System.out.println(a); }

// 2. ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ๊ด„ํ˜ธ() ์ƒ๋žต ๊ฐ€๋Šฅ
a -> { System.out.println(a); }

// 3. ํ•˜๋‚˜์˜ ์‹คํ–‰๋ฌธ๋งŒ ์žˆ๋‹ค๋ฉด ์ค‘๊ด„ํ˜ธ {} ์ƒ๋žต ๊ฐ€๋Šฅ
a ->  System.out.println(a); 

// 4. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ๊ด„ํ˜ธ () ์ƒ๋žตํ•  ์ˆ˜ ์—†์Œ
() -> { System.out.println(a); }

// 5. ๋ฆฌํ„ด๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ, return ๋ฌธ์„ ์‚ฌ์šฉ
(x, y) -> { return x + y; }

// 6. ์ค‘๊ด„ํ˜ธ {}์— return ๋ฌธ๋งŒ ์žˆ์„ ๊ฒฝ์šฐ, ์ค‘๊ด„ํ˜ธ๋ฅผ ์ƒ๋žต
(x, y) -> x + y

ํŠน์ง•

  • ๋žŒ๋‹ค์‹ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋Š” final์ด ๋ถ™์ง€ ์•Š์•„๋„ ์ƒ์ˆ˜๋กœ ๊ฐ„์ฃผ๋œ๋‹ค.
    • ๋žŒ๋‹ค์‹์€ ๋ณ„๋„ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” ์Šค๋ ˆ๋“œ์™€ ๋žŒ๋‹ค์‹์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
    • ๋งŒ์•ฝ, A๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” ์Šค๋ ˆ๋“œ์ด๊ณ , B๋Š” ๋žŒ๋‹ค์‹์„ ์‹คํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ์ผ ๋•Œ, ๋žŒ๋‹ค์—์„œ๋Š” ์™ธ๋ถ€ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์บก์ฒ˜๋ง์„ ํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋žŒ๋‹ค์‹์„ ์‹คํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ์—์„œ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.
    • ๊ทธ๋Ÿฐ๋ฐ, ๋ณต์‚ฌ๋˜๋Š” ๊ฐ’์ธ ์™ธ๋ถ€ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ, ๋ณต์‚ฌ๋œ ๊ฐ’์ด ์ตœ์‹  ๊ฐ’์ž„์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ์Šคํƒ ์˜์—ญ์€ ์Šค๋ ˆ๋“œ ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ A, B๊ฐ€ ๊ฐ–๋Š” ์Šคํƒ ์˜์—ญ์€ ๊ฐ์ž ๊ณ ์œ ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ ์Šคํƒ์— ์žˆ๋Š” ๊ฐ’์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค. 
    • ๋”ฐ๋ผ์„œ ๋ณต์‚ฌ๋œ ๊ฐ’์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๊ฒƒ์ด ๋žŒ๋‹ค์‹์—์„œ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ถ€ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ์ด์œ ์ด๋‹ค.
  • ๋žŒ๋‹ค์‹์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ช…์€ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ช…๊ณผ ์ค‘๋ณต๋  ์ˆ˜ ์—†๋‹ค.
 

์ž๋ฐ”์˜ effectively final

์ž๋ฐ”์—์„œ final๋กœ ์„ ์–ธ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ดˆ๊ธฐํ™”๋œ ์ดํ›„ ์ฐธ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„ final์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š”

madplay.github.io

์ข…์ข… ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด์™€ ๋žŒ๋‹ค์‹์„ ๋™์ผ์‹œํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ๊ฐ™์€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.
1. ๋žŒ๋‹ค์‹์€ ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด ์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ
2. ๋žŒ๋‹ค์‹ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜๋Š” Variable Capture(๊ฐ’ ๋ณต์‚ฌ)๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด ๊ฐ’์€ final์ด๊ฑฐ๋‚˜ final ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ
 
์‚ฌ์šฉํ•˜๋Š” ์ž…์žฅ์—์„œ๋Š” '์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋žŒ๋‹ค์‹ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜๋Š” final์ด๊ฑฐ๋‚˜ final ์„ฑ๊ฒฉ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค'๊ณ  ๊ธฐ์–ตํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. [์ถœ์ฒ˜]

 

์žฅ์ 

  1. ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  2. ์‹์— ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๊ฐ€ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง„๋‹ค.
  3. ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—†์ด ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ƒ์‚ฐ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
    • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์‹œ์— ์œ ๋ฆฌํ•˜๋‹ค. ๋ฐ์ดํ„ฐ ํฌ์žฅ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ํ›„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์†๋„์— ์œ ๋ฆฌํ•˜๋‹ค.
  4. ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์šฉ์ดํ•˜๋‹ค.
    • ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ทจํ•ฉํ•  ๋•Œ ๊ฐ์ฒด๋ณด๋‹ค ํ•จ์ˆ˜๊ฐ€ ์œ ๋ฆฌํ•˜๋‹ค.

๋‹จ์ 

  1. ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋งŒ๋“  ์ต๋ช…ํ•จ์ˆ˜๋Š” ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค.
  3. ๋žŒ๋‹ค๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด ๋น„์Šทํ•œ ํ•จ์ˆ˜๊ฐ€ ์ค‘๋ณต ์ƒ์„ฑ๋˜์–ด ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
  4. ์žฌ๊ท€๋กœ ๋งŒ๋“ค๊ฒฝ์šฐ์— ๋ถ€์ ํ•ฉํ•˜๋‹ค.

๊ฒฐ๊ตญ ๋ฌด์กฐ๊ฑด ๋žŒ๋‹ค๊ฐ€ ์ข‹๋‹ค๋Š” ๋ณด์žฅ์€ ์—†๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ํ•„์š”์— ๋งž๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค

ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•œ ๊ฐœ์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งํ•œ๋‹ค.

ํ•จ์ˆ˜๋ฅผ 1๊ธ‰ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜(@FunctionalInterface)์œผ๋กœ, ์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธํ•˜์—ฌ ๋‹จ ํ•˜๋‚˜์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋งŒ์„ ๊ฐ–๋„๋ก ์ œํ•œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • ๋งค๊ฐœํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋˜์–ด ๋žŒ๋‹ค์‹์„ ๋งค๊ฐœ๊ฐ’์œผ๋กœ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
  • ์ž๋ฐ”์˜ ๋žŒ๋‹ค์‹์ด ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค.

java.util.function ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. 

ํ‘œ์ค€ API๋กœ ์ œ๊ณต๋˜๋Š” ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค ์ข…๋ฅ˜

  1. Consumer
    • ์†Œ๋น„์ž๋ผ๋Š” ๋œป์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„๋งŒํ•˜๊ณ  ๋๋‚˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.
    • ๋งค๊ฐœ๊ฐ’๋งŒ ์žˆ๊ณ  ๋ฆฌํ„ด๊ฐ’์ด ์—†๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  2. Supplier
    • ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต๊ธ‰ํ•˜๋Š” ์˜๋ฏธ. ๊ณต๊ธ‰์ž ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ด์‹œ์ผœ์ค€๋‹ค.
    • ๋งค๊ฐœ๊ฐ’์€ ์—†๊ณ  ๋ฆฌํ„ด๊ฐ’๋งŒ ์žˆ๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  3. Function
    • A ๋ฐ์ดํ„ฐ๋ฅผ B ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    • ๋งค๊ฐœ๊ฐ’๊ณผ ๋ฆฌํ„ด๊ฐ’์ด ๋ชจ๋‘ ์žˆ๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ์ฃผ๋กœ ๋งค๊ฐœ๊ฐ’์„ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ๋งคํ•‘(ํƒ€์ž…๋ณ€ํ™˜)ํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.
  4. Operator
    • ์–ด๋–ค ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋งค๊ฐœ๊ฐ’๊ณผ ๋ฆฌํ„ด๊ฐ’์ด ๋ชจ๋‘ ์žˆ๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ์ฃผ๋กœ ๋งค๊ฐœ๊ฐ’์„ ์—ฐ์‚ฐํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.
  5. Predicate
    • ์–ด๋–ค ๋งค๊ฐœ๊ฐ’์„ ์กฐ์‚ฌํ•ด์„œ true ๋˜๋Š” false๋ฅผ ๋ฆฌํ„ดํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋งค๊ฐœ๊ฐ’๊ณผ ๋ฆฌํ„ด๊ฐ’(true/false)๊ฐ€ ์žˆ๋‹ค.

 

๋ฉ”์†Œ๋“œ, ์ƒ์„ฑ์ž ์ฐธ์กฐ(Method/Constructor Reference)

ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋žŒ๋‹ค์‹์ด ์•„๋‹Œ ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ/์ƒ์„ฑ์ž๋ฅผ ์ฐธ์กฐ์‹œ์ผœ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ฝœ๋ก  ๋‘๊ฐœ(::)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋žŒ๋‹ค์‹์„ ๋” ๊ฐ„๋žตํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ์˜ 3๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  1. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… = ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…
  2. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜ = ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜
  3. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฐ˜ํ™˜ํ˜• = ๋ฉ”์†Œ๋“œ์˜ ๋ฐ˜ํ™˜ํ˜•

์ข…๋ฅ˜

  1. static ๋ฉ”์†Œ๋“œ ์ฐธ์กฐ
    • ํด๋ž˜์Šค_์ด๋ฆ„::๋ฉ”์†Œ๋“œ_์ด๋ฆ„
  2. ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ ์ฐธ์กฐ
    • ์ธ์Šคํ„ด์Šค_๋ณ€์ˆ˜::๋ฉ”์†Œ๋“œ_์ด๋ฆ„
  3. ๋žŒ๋‹ค์‹์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉ”์†Œ๋“œ ์ฐธ์กฐ
    • ๋งค๊ฐœ๋ณ€์ˆ˜์˜_ํƒ€์ž…_ํด๋ž˜์Šค_์ด๋ฆ„::๋ฉ”์†Œ๋“œ_์ด๋ฆ„
  4. ์ƒ์„ฑ์ž ์ฐธ์กฐ
    • ํด๋ž˜์Šค_์ด๋ฆ„::new

 

์ฐธ๊ณ 

๋Œ“๊ธ€