κ°λ
ν΄λμ€ λ΄λΆμμ μ¬μ©ν λ°μ΄ν° νμ μ μΈλΆμμ μ§μ νλ κΈ°λ²μ΄λ€.
μ νμν κΉ?
1. μ€λ³΅λλ μμ€λ₯Ό νλλ‘ λ¬Άμ΄ μμ€μ½λμ μ¬μ¬μ©μ±μ κ·Ήλν νκΈ° μν΄μ
λ°μ΄ν° νμ
λ³λ‘ ν΄λμ€λ₯Ό μμ±ν νμ μμ΄ νλμ ν΄λμ€μμ λ°μ΄ν° νμ
λ§ λ°κΏ 쑰립νλ― μ½λ μ¬νμ©μ΄ κ°λ₯νλ€.
2. κ°μ²΄ μμ±μ μ¬μ©νλ €κ³ νλ λ°μ΄ν°νμ
μ λν μ νμ μ€ μ μλ€.
ν¨κ³Ό → μ»΄νμΌ νμμ νμ
체ν¬λ₯Ό νκΈ° μν¨μ΄λ νμ
μΊμ€ν
(νλ³ν)μ μ κ±°νμ¬ νλ‘κ·Έλ¨ μ±λ₯ ν₯μ
→ νλ³νμ΄ νμμκ³ , νμ
μμ μ±μ΄ 보μ₯λλ€.
- extends T(μν κ²½κ³), ? super T(νν κ²½κ³), ?(μμΌλ μΉ΄λ)
λ°μ΄ν° νμ
μ μ ννκ² λλ©΄ μ»μ μ μλ μ΄μ μ μμ κ΄κ³μμ μλ€.
μμ κ΄κ³μμ μμμ λΆλͺ¨μ λͺ¨λ κ²μ κ°μ Έλ€ μ¬μ©ν μ μλ€. κ·Έλ κ² λλ¬Έμ 무ν±λκ³ <T> λΌκ³ μμ±νμ¬ μ무 λ°μ΄ν°νμ μ νμ©νλ€λ©΄ μ»΄νμΌμ μλ¬΄λ° μ€λ₯κ° κ²μΆλμ§ μκΈ° λλ¬Έμ μ¬μ©μλ λ¬Έμ κ° μλ€κ³ νλ¨ν μ μμ§λ§ λ°νμμ μμΈκ° λ°μν μ μλ€. μ΄λ° κ²½μ°λ₯Ό λ°©μ§νκΈ° μν΄ λ°μ΄ν° νμ μ μ ννλ κ²μ΄ νμνλ€.
μ λ€λ¦μ μ¬μ©ν μ μλ κ²½μ°
- λ°°μ΄ μμ±
new μ°μ°μλ heap μμμ μΆ©λΆν 곡κ°μ΄ μλμ§ νμΈ ν λ©λͺ¨λ¦¬λ₯Ό ν보νλ μν μ νλλ°, μ»΄νμΌ μμ μ νμ Tκ° λ¬΄μμΈμ§ μ μ μκΈ° λλ¬Έμ μ λ€λ¦μΌλ‘ λ°°μ΄μ μμ±ν μ μλ€.
→ ex) Object νμ μΌλ‘ μ μΈνκ³ get() νΈμΆμ T νμ μΌλ‘ νλ³ν ν¨ - static λ³μ
static λ³μλ μΈμ€ν΄μ€μ μ’ μλμ§ μμ ν΄λμ€ λ³μλ‘μ¨ λͺ¨λ μΈμ€ν΄μ€κ° 곡ν΅λ μ μ₯곡κ°μ 곡μ νκ² λλ€.
νλμ 곡μ λ³μκ°, μμ±λλ μΈμ€ν΄μ€μ λ°λΌ νμ μ΄ λ°λλ€λ κ°λ μμ²΄κ° λ§μ΄ μλ¨. λ°λΌμ static λ³μμλ μ λ€λ¦μ μ¬μ©ν μ μλ€.
νμ§λ§, static λ©μλμμλ μ λ€λ¦μ μ¬μ©ν μ μλ€.
μ λ€λ¦ λ©μλ
리ν΄νμ μ΄ λ¬΄μμΈμ§ μκ΄μμ΄ λ΄κ° μ λ€λ¦ λ©μλλΌλ κ²μ μ»΄νμΌλ¬μκ² μλ €μ€μΌ νλ€. 리ν΄νμ μ μ μνκΈ° μ μ μ λ€λ¦ νμ μ λν μ μ(λ¦¬ν΄ νμ μμ <T>)λ₯Ό λ°λμ μ μ΄μΌ νλ€.
μΌλ° ν΄λμ€ λ΄λΆμλ μ λ€λ¦ λ©μλλ₯Ό μ μν μ μλ€.
→ ν΄λμ€μ μ§μ λ νμ
νλΌλ―Έν°μ μ λ€λ¦ λ©μλμ μ μλ νμ
νλΌλ―Έν°λ μκ΄μ΄ μλ€. μ¦, μ λ€λ¦ ν΄λμ€μ <T> λ₯Ό μ¬μ©νκ³ , κ°μ ν΄λμ€μ μ λ€λ¦ λ©μλμλ <T> λ‘ κ°μ μ΄λ¦μ κ°μ§ νμ
νλΌλ―Έν°λ₯Ό μ¬μ©νλλΌλ λμ μ ν μκ΄μ΄ μλ€λ κ²μ μλ―Ένλ€.
static λ©μλ with μ λ€λ¦
static λ³μμ κ²½μ°μ μ λ€λ¦μ μ¬μ©νλ©΄ μ¬λ¬ μΈμ€ν΄μ€μμ μ΄λ€ νμ μΌλ‘ 곡μ λμ΄μΌ ν μ§ μ§μ ν μκ° μμ΄μ μ¬μ©ν μ μλ€. static λ³μλ κ° μμ²΄κ° κ³΅μ λκΈ° λλ¬Έμ΄λ€. κ° μμ²΄κ° κ³΅μ λλ €λ©΄ νμ μ λν μ 보λ μμ΄μΌ νλ€.
νμ§λ§, static λ©μλμ κ²½μ° λ©μλμ νλ§ κ³΅μ λλ€κ³ μκ°νλ©΄ λλ€. κ·Έλ¦¬κ³ κ·Έ ν μμμ μ§μλ³μμ²λΌ νμ νλΌλ―Έν°κ° λ€μνκ² μ€κ°λ ννλ‘ μ¬μ©λ μ μλ κ²μ΄λ€.
μ΄λ static λ©μλκ° μλ μΈμ€ν΄μ€ λ©μλμ κ²½μ°μλ λ§μ°¬κ°μ§λ€. ν΄λμ€μ μ μλ νμ νλΌλ―Έν°μλ μ ν λ³κ°λ‘ μ λ€λ¦ λ©μλλ μμ λ§μ νμ νλΌλ―Έν°λ₯Ό κ°μ§λ€.
μ°Έκ³
- https://xxxelppa.tistory.com/34?category=607878
- https://xxxelppa.tistory.com/206?category=858435
- https://st-lab.tistory.com/153
- https://yaboong.github.io/java/2019/01/19/java-generics-1/
'π > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] λλ€μ (0) | 2021.08.10 |
---|---|
[Java] μ€νΈλ¦Ό Stream (0) | 2021.07.28 |
[Java] μλ° κ°μ λ¨Έμ (Java Virtual Machine) (0) | 2021.07.28 |
[Java] Primitive type vs Reference type (0) | 2021.04.18 |
[Java] HashMap, LinkedHashMap, TreeMap, Hashtable μ°¨μ΄ (0) | 2021.04.03 |
λκΈ