2022. 5. 15. 13:13γJAVA/μλ°μ μ μ
1οΈβ£ μ§λ€λ¦μ€ Generics
μ§λ€λ¦μ€λ λ€μν νμ μ κ°μ²΄λ€μ λ€λ£¨λ λ©μλλ 컬λ μ ν΄λμ€μ μ»΄νμΌ μμ νμ 체ν¬λ₯Ό ν΄μ£Όλ κΈ°λ₯μ΄λ€.
κ°μ²΄μ νμ μ μ»΄νμΌ μμ 체ν¬νκΈ° λλ¬Έμ κ°μ²΄μ νμ μμ μ±μ λμ΄κ³ νλ³νμ λ²κ±°λ‘μμ΄ μ€μ΄λ λ€.
νμ μ μμ μ±μ λμΈλ€λ κ²μ μλνμ§ μμ νμ μ κ°μ²΄κ° μ μ₯λλ κ²μ λ§κ³ μ μ₯λ κ°μ²΄λ₯Ό κΊΌλ΄μ¬ λ μλμ νμ κ³Ό λ€λ₯Έ νμ μΌλ‘ μλͺ» νλ³νλμ΄ λ°μν μ μλ μ€λ₯λ₯Ό μ€μ¬μ€λ€.
ex) Arraylistμ κ°μ 컬λ μ ν΄λμ€λ λ€μν μ’ λ₯μ κ°μ²΄λ€μ λ΄μ μ μκΈ°λ νμ§λ§ λ³΄ν΅ ν μ’ λ₯μ κ°μ²΄λ₯Ό λ΄λ κ²½μ°κ° λ λ§λ€.
κ·Έλ°λ°λ κΊΌλΌ λ λ§λ€ νμ 체ν¬λ₯Ό νκ³ νλ³ννλ κ²μ μ무λλ λΆνΈν μλ°μ μλ€.
κ²λ€κ° μνμ§ μλ μ’ λ₯μ κ°μ²΄κ° ν¬ν¨λλ κ²μ λ§μ λ°©λ²μ΄ μλ€λ κ²λ λ¬Έμ λ€!
-> μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νλ κ²μ΄ μ§λ€λ¦μ€μ΄λ€.
μ§λ€λ¦μ€μ μ₯μ
- νμ μμ μ±μ μ 곡νλ€.
- νμ 체ν¬μ νλ³νμ μλ΅ν μ μμΌλ―λ‘ μ½λκ° κ°κ²°ν΄ μ§λ€.
κ°λ¨νκ²λ μ§λ€λ¦μ€λ λ€λ£° κ°μ²΄μ νμ μ 미리 λͺ μν΄μ λ²κ±°λ‘μ΄ νλ³νμ μ€μ¬μ€λ€!!
2οΈβ£ μ§λ€λ¦ ν΄λμ€μ μ μΈ
μ§λ€λ¦ νμ μ ν΄λμ€μ λ©μλμ μ μΈν μ μλ€.
ν΄λμ€λ₯Ό μ§λ€λ¦ ν΄λμ€λ‘ λ³κ²½νλ€λ©΄ ν΄λμ€ μμ <T>λ₯Ό λΆμ΄λ©΄ λλ€!
Box<T>μμ Tλ₯Ό νμ λ³μλΌκ³ νκ³ , Typeμ Tλ₯Ό λ°μ¨ κ±°λ€. T λμ λ€λ₯Έ λ¬Έμλ₯Ό μ¬μ©ν΄λ μκ΄μ μλ€.
Arraylist<E>μ κ²½μ°μ Eλ Elementμ Eμ΄λ€.
νμ λ³μκ° μ¬λ¬κ°μΈ κ²½μ°μλ Map<K, V> μμ Kλ Key , Vλ Valueλ₯Ό μλ―Ένλ€.
-> μ΄κ±΄ κΈ°νΈμ μ’ λ₯λ§ λ€λ₯Ό λΏμ΄κ³ μμμ μ°Έμ‘°ν νμ μ μλ―Ένλ€λ κ²μ λμΌνλ€.
κ·Έλ¦¬κ³ μ§λ€λ¦ ν΄λμ€κ° λ Boxν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν λλ μ°Έμ‘°λ³μμ μμ±μμ νμ T λμ μ μ¬μ©λ μ€μ νμ μ μ§μ ν΄μ£Όμ΄μΌ νλ€.
- μ§λ€λ¦μ€μ μ©μ΄
- μ§λ€λ¦μ€μ μ ν
μ§λ€λ¦μ€ ν΄λμ€ Boxμ κ°μ²΄λ₯Ό μμ±ν λ, κ°μ²΄λ³λ‘ λ€λ₯Έ νμ μ μ§μ νλ κ²μ μ μ νλ€! (μλ κ·Έλ¬λ €κ³ λ§λ κΈ°λ₯μ΄λκΉ)
1. λͺ¨λ κ°μ²΄μ λν΄ λμΌνκ² λμν΄μΌνλ static λ©€λ²μ νμ λ³μ Tλ₯Ό μ¬μ©ν μ μλ€.
2. μ§λ€λ¦ νμ μ λ°°μ΄μ μμ±νλ κ²λ νμ©λμ§ μλλ€.
-> staticλ©€λ²λ νμ λ³μμ μ§μ λ νμ , μ¦ λμ λ νμ μ μ’ λ₯μ κ΄κ³μμ΄ λμΌν κ²μ΄μ΄μΌ νκΈ° λλ¬Έμ static λ©€λ²μλ νμ λ³μλ₯΄ μ§μ ν μ μλ€. μ¦ Box<Apple>.itemκ³Ό Box<Grape>.itemμ΄ λ€λ₯Έ κ²μ΄λ©΄ μλλ€λ λ»μ΄λ€!!
-> μ§λ€λ¦ λ°°μ΄μ μμ±ν μ μλ κ²μ new μ°μ°μ λλ¬ΈμΈλ° μ΄ μ°μ°μλ μ»΄νμΌ μμ μ Tκ° λ¬΄μμΈμ§ μ ννκ² μμμΌ νκΈ° λλ¬Έμ΄λ€!!!
3οΈβ£ μ§λ€λ¦ ν΄λμ€μ κ°μ²΄ μμ±κ³Ό μ¬μ©
1. Box<T>μ κ°μ²΄λ₯Ό μμ±ν λ μ°Έμ‘°λ³μμ μμ±μμ λμ λ νμ μ΄ μΌμΉν΄μΌνλ€.
-> λ νμ μ΄ μμ κ΄κ³μ μλ€κ³ ν΄λ λμ λ νμ μ΄ λ€λ₯΄λ©΄ μλ¬κ° λ°μνλ€.
2. λ μ§λ€λ¦ ν΄λμ€μ νμ μ΄ μμκ΄κ³μ΄κ³ , λμ λ νμ μ΄ μΌμΉνλ κ²μ κ°λ₯νλ€.
κ·Έλ¦¬κ³ jdk1.7λΆν°λ μΆμ μ΄ κ°λ₯ν κ²½μ° νμ μ μλ΅ν μ μκ² λλ€. μ°Έμ‘°λ³μμ νμ μΌλ‘λΆν° Boxκ° Appleνμ μ κ°μ²΄λ§ μ μ₯νλ€λ κ²μ μμ μκΈ° λλ¬Έμ μμ±μμ λ°λ³΅ν΄μ νμ μ μ§μ ν΄μ£Όμ§ μμλ λλ€.
3. λμ λ νμ κ³Ό λ€λ₯Έ νμ μ κ°μ²΄λ μΆκ°ν μ μλ€.
4οΈβ£ μ νλ μ§λ€λ¦ ν΄λμ€
νμ 맀κ°λ³μ Tμ μ§μ ν μ μλ νμ μ μ’ λ₯λ₯Ό μ ννκΈ° μν΄μλ extends ν€μλλ₯Ό μ¬μ©νλ©΄ νΉμ νμ μ μμλ€λ§ λμ ν μ μμ μ νν μ μλ€.
-> μ΄λ ν΄λμ€κ° μλλΌ μΈν°νμ΄μ€λ₯Ό ꡬνν΄μΌνλ€λ μ μ½μ΄ νμνλ€λ©΄ implementsκ° μλ extendsλ₯Ό μ¬μ©νλ€.