λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programming/Java

25 Generics

by Dowon Kang 2024. 1. 21.

 

μ œλ„€λ¦­μŠ€(Generics)λŠ” μžλ°”μ—μ„œ μ»¬λ ‰μ…˜ ν΄λž˜μŠ€μ™€ κ΄€λ ¨λœ μ½”λ“œμ˜ νƒ€μž… μ•ˆμ „ν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. μ œλ„€λ¦­μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μ½”λ“œμ—μ„œ λ°œμƒν•  수 μžˆλŠ” νƒ€μž… κ΄€λ ¨ 였λ₯˜λ₯Ό 사전에 κ²€μΆœν•  수 μžˆμ–΄ μ•ˆμ •μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ œλ„€λ¦­μŠ€ λ„μž… 이유 

μ œλ„€λ¦­μŠ€κ°€ μ—†λŠ” μƒν™©μ—μ„œλŠ” μ»¬λ ‰μ…˜κ³Ό κ΄€λ ¨λœ ν΄λž˜μŠ€λ₯Ό μ‚¬μš©ν•  λ•Œ νƒ€μž… μ•ˆμ •μ„±μ΄ λ–¨μ–΄μ§ˆ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. μ œλ„€λ¦­μŠ€κ°€ λ„μž…λ˜κΈ° μ „μ—λŠ” μ»¬λ ‰μ…˜ ν΄λž˜μŠ€λ“€μ΄ Objectλ₯Ό κΈ°λ°˜μœΌλ‘œ λ™μž‘ν•˜μ˜€κΈ° λ•Œλ¬Έμ— μ–΄λ–€ νƒ€μž…μ˜ κ°μ²΄λ“  μ €μž₯ν•  μˆ˜ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ΄λ‘œ μΈν•΄ λͺ‡ κ°€μ§€ λ¬Έμ œκ°€ λ°œμƒν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

1) νƒ€μž… μ•ˆμ •μ„±μ΄ 떨어짐 

λ‹€λ₯Έ νƒ€μž…μ˜ 값을 넣어도 μ»΄νŒŒμΌλŸ¬λŠ” λͺ¨λ‘ Obcjet νƒ€μž…μœΌλ‘œ 보기 λ•Œλ¬Έμ— 였λ₯˜ X

 

2) ν˜•λ³€ν™˜μ‹œ λŸ°νƒ€μž„ μ—λŸ¬ λ°œμƒ

λΆ„λͺ… μ •μˆ˜ 10,20 인데 μ»΄νŒŒμΌλŸ¬κ°€ Object νƒ€μž…μœΌλ‘œ λ³΄λ‹ˆκΉŒ ν˜•λ³€ν™˜ ν•„μš”, string은 μ•„μ˜ˆ μ—λŸ¬ λ°œμƒ

 

μ œλ„€λ¦­μŠ€λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 λ¬Έμ œμ λ“€μ„ μ‚΄νŽ΄λ³΄λ©΄ μ»΄νŒŒμΌλŸ¬λŠ” λ°μ΄ν„°μ˜ νƒ€μž…μ„ ν™•μΈν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 사싀을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έμ € λͺ¨λ‘ Object νƒ€μž…μœΌλ‘œ νŒλ‹¨ν•΄λ²„λ¦¬λ‹ˆ λ°œμƒν•˜λŠ” λ¬Έμ œμ λ“€μΈ 것이죠.

 

μ œλ„€λ¦­μŠ€κ°€ λ„μž…λ˜λ©΄μ„œ μ΄λŸ¬ν•œ λ¬Έμ œλ“€μ„ ν•΄κ²°ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. μ œλ„€λ¦­μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ μ»¬λ ‰μ…˜μ— μ €μž₯ν•˜λŠ” λ°μ΄ν„°μ˜ νƒ€μž…이 λ―Έλ¦¬ μ§€μ •λ˜μ–΄ μ»΄νŒŒμΌλŸ¬κ°€ μ΄λ₯Ό κ°•μ œν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λ‘œμ¨ λŸ°νƒ€μž„에 λ°œμƒν•  μˆ˜ μžˆλŠ” ν˜•λ³€ν™˜ μ˜€λ₯˜λ‚˜ λΆˆμΌμΉ˜λœ νƒ€μž…μ˜ κ°’이 μ €μž₯λ˜λŠ” λ¬Έμ œλ₯Ό μ‚¬μ „에 λ°©μ§€ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

μ œλ„€λ¦­μŠ€ μ‚¬μš©μ˜ 이점

  1. νƒ€μž… μ•ˆμ „μ„± (Type Safety): μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ κ°•μ œν•˜λ―€λ‘œ, λŸ°νƒ€μž„μ— λ°œμƒν•  수 μžˆλŠ” νƒ€μž… κ΄€λ ¨ 였λ₯˜λ₯Ό 컴파일 λ‹¨κ³„μ—μ„œ 사전에 방지할 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±κ³Ό μΌλ°˜ν™”: μ œλ„€λ¦­μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ— λŒ€ν•΄ λ™μΌν•œ μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. μΊμŠ€νŒ…μ˜ λΆˆν•„μš”: μ œλ„€λ¦­μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ 데이터λ₯Ό κ°€μ Έμ˜¬ λ•Œ ν˜•λ³€ν™˜μ΄ ν•„μš”ν•˜μ§€ μ•Šμ•„ μ½”λ“œκ°€ κ°„κ²°ν•΄μ§‘λ‹ˆλ‹€.

μ œλ„€λ¦­μŠ€λŠ” JDK 1.5 버전뢀터 λ„μž…λœ λ¬Έλ²•μœΌλ‘œ 주둜 μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ—μ„œ λ§Žμ΄ μ‚¬μš©λ˜λ©°, ν΄λž˜μŠ€, μΈν„°νŽ˜μ΄μŠ€, λ©”μ„œλ“œ λ“±μ—μ„œ μ μš©λ  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

 


Generics is a concept in Java where you can enable a class, interface and, method, accept all (reference) types as parameters. In other words it is the concept which enables the users to choose the reference type that a method, constructor of a class accepts, dynamically.

 

'Programming > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

27 Functional Interface (feat. Lambda)  (1) 2024.01.21
26 Thread  (1) 2024.01.21
24 Enum  (0) 2024.01.21
23 Annotation  (1) 2024.01.21
22 throw & throws  (0) 2024.01.21

λŒ“κΈ€