[Java] Generic

AhnickΒ·2021λ…„ 2μ›” 18일
0
post-thumbnail

Generic μ΄λž€

μ œλ„€λ¦­μ€ Java5μ—μ„œ μΆ”κ°€λœ κ°œλ…μœΌλ‘œ, 컴파일 κ³Όμ •μ—μ„œ νƒ€μž… 였λ₯˜λ₯Ό κ°μ§€ν•˜κΈ° μœ„ν•΄
클래슀 λ˜λŠ” λ©”μ†Œλ“œμ—μ„œ μ‚¬μš©ν•  νƒ€μž…μ„ 미리 λͺ…μ‹œν•˜λŠ” κ°œλ…μ„ λœ»ν•©λ‹ˆλ‹€.

ν΄λž˜μŠ€λ‚˜ λ©”μ†Œλ“œμ—μ„œ μ œλ„€λ¦­μ„ ν†΅ν•˜μ—¬ νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄
μ»΄νŒŒμΌλ„ 잘 되고, μ—λŸ¬λ„ λ°œμƒν•˜μ§€ μ•Šμ„ 수 μžˆμ§€λ§Œ λŸ°νƒ€μž„ κ³Όμ •μ—μ„œ
였λ₯˜κ°€ λ°œμƒν•  수 μžˆλŠ” 상황이 μ’…μ’… μƒκΉλ‹ˆλ‹€.

λ”°λΌμ„œ μžλ°”μ—μ„  <> 기호 μ•ˆμ— νƒ€μž…μ„ λͺ…μ‹œν•˜μ—¬ μ΄λŸ¬ν•œ 였λ₯˜λ₯Ό λ°©μ§€ν•˜κ³ 
쑰금 더 μ•ˆμ „ν•œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•  수 μžˆλŠ” Generic을 λ„μž…ν•œ 것 μž…λ‹ˆλ‹€.

Generic의 μ‚¬μš©

μ œλ„€λ¦­μ€ μΈν„°νŽ˜μ΄μŠ€, 클래슀, λ©”μ†Œλ“œ 등에 <>λ₯Ό λ„£κ³ 
κ·Έ μ•ˆμ— μ‚¬μš©ν•  νƒ€μž…μ„ λͺ…μ‹œν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

Generic νƒ€μž…μ˜ λͺ…λͺ… κ·œμΉ™

μžλ°”μ—μ„œλŠ” μ œλ„€λ¦­ νƒ€μž…μ— λ“€μ–΄κ°ˆ νƒ€μž… 이름에 λŒ€ν•œ κ·œμΉ™μ΄ μžˆμŠ΅λ‹ˆλ‹€.
이 κ·œμΉ™μ€ λ°˜λ“œμ‹œ μ§€μΌœμ•Ό ν•˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • E : μš”μ†Œ (Element)
  • K : ν‚€ (Key)
  • N : 숫자 (Number)
  • T : νƒ€μž… (Type)
  • V : κ°’ (Value)
  • S,U,V : 두 번째, μ„Έ 번째, λ„€ λ²ˆμ§Έμ— μ„ μ–Έλœ νƒ€μž…

Generic Wildcard

가끔 μš°λ¦¬λŠ” μ œλ„€λ¦­μ— ?κ°€ λ“€μ–΄κ°„ μ½”λ“œλ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
μš°λ¦¬κ°€ μ–΄λ–€ νƒ€μž…μ΄ λ„˜μ–΄μ™€λ„ ν•΄λ‹Ή λ©”μ†Œλ“œ ν˜Ήμ€ ν΄λž˜μŠ€μ—μ„œ 처리λ₯Ό ν•  수 μžˆλ‹€λ©΄
μ œλ„€λ¦­μ— ?λ₯Ό λͺ…μ‹œν•˜μ—¬ μ£ΌλŠ” 것이 λ°”λžŒμ§ν•©λ‹ˆλ‹€.

보톡 ?둜 λͺ…μ‹œν•œ μ œλ„€λ¦­μ€ Object λ“±μœΌλ‘œ μ²˜λ¦¬ν•˜κ²Œ λ©λ‹ˆλ‹€.

Bounded Wildcards

μ•žμ—μ„œ μ‚¬μš©ν•œ ? 뒀에 extendsλ₯Ό λͺ…μ‹œν•˜λ©΄, ν•΄λ‹Ή 클래슀λ₯Ό 상속 받은
νƒ€μž… 쀑 μ–΄λ–€ νƒ€μž…μ΄ 와도 상관 μ—†μŒ
을 μ˜λ―Έν•©λ‹ˆλ‹€.

μ–΄λ–€ νƒ€μž…μ΄ 와도 μƒκ΄€μ—†μ§€λ§Œ, 이 정도 λ²”μœ„λŠ” μ§€μΌœμ€˜μ•Ό ν•œλ‹€ λΌλŠ” 의미둜
μ‚¬μš©λ˜λ©° Bounded Wildcars라고도 ν•©λ‹ˆλ‹€.

정리

μ €λŠ” ν”„λ‘œκ·Έλž˜λ°μ„ 처음 μ‹œμž‘ν•  λ•Œ 보기만 해도 μ–΄λ €μ›Œλ³΄μ΄λŠ” μ½”λ“œμ˜ 기쀀이
μ œλ„€λ¦­μ΄μ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€ γ…Žγ…Ž μ•Œλ©΄ 쉽고 νŽΈν•œλ° λͺ¨λ₯΄κ³  보면 λ‚œν•΄ν•œ μ½”λ“œκ°€
μ œλ„€λ¦­μ΄ μ•„λ‹κΉŒ μ‹Άλ„€μš”. μ΄μ œλŠ” λŸ°νƒ€μž„ 였λ₯˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ κ°œλ…μ΄λΌλŠ”κ±Έ
μ•Œκ³  λ³΄λ‹ˆ 고마운 κ°œλ…μ΄κΈ°λ„ ν•©λ‹ˆλ‹€

0개의 λŒ“κΈ€