Week14(Generic)
μ λ€λ¦μ κΈ°λ³Έ κ°λ
μ λ€λ¦μ λͺ¨λ μ’ λ₯μ νμ μ λ€λ£° μ μλλ‘, ν΄λμ€λ λ©μλμ λ§€κ°λ³μ(generic type)μ μ΄μ©νμ¬ μ μΈνλ κΈ°λ²μ΄λ€. κ·Έλ¦¬κ³ λ³Έ λ μ°μ΄λ΄κΈ° μν΄ λ§λ€μ΄μ§ νμ΄λΌκ³ μκ°νλ©΄ νΈνλ€. μλ°μμμ μ λ€λ¦μ ν΄λμ€ μ½λλ₯Ό μ°μ΄λ΄λ―μ΄ μμ°ν μ μλλ‘ μΌλ°ν(generic)μν€λ λꡬμ΄λ€.
+μ λ€λ¦ νμ
λ§€κ°λ³μ
μ¬κΈ°μ νμ λ§€κ° λ³μλ‘ μ¬μ©νλ λ¬Έμλ λ€λ₯Έ λ³μμ νΌλμ νΌνκΈ° μν΄ μΌλ°μ μΌλ‘ νλμ λλ¬Έμλ₯Ό μ¬μ©
E : Elementμ μλ―Ένμ¬ μ»¬λ μ μμ μμμμ λνλ
T : Typeμ μλ―Έ
V : Valueμ μλ―Έ
K : Keyμ μλ―Έ
μ λ€λ¦ 컬λ μ
μμ±
λ²‘ν° μμ±ν λ, Vector μ Eμ μμλ₯Ό μ¬μ©ν νμ μ μ§μ ν΄μΌ νλ€. μλ₯Ό λ€μ΄, μ μ κ°λ§ μ½μ κ°λ₯ν 벑ν°λ₯Ό λ§λ€κ³ μ νλ©΄ λ€μ κ³Ό κ°μ΄ Eμ Integerλ₯Ό μ§μ νμ¬ μ¬μ©κ°λ₯
μ΄λ κ² λ°μ΄ν°μ νμ μ λ£μ΄μ€μΌνλλ°
int, char, double λ±μ κΈ°λ³Έ νμ μ Eμ μ¬μ©ν μ μλ€.
->μ΄λ κ² νλ©΄ μλ¬κ° λκ² λλ€.
μ΄λ κ² μ΄κΈ° μ©λμ μ§μ ν μ μμ§λ§ κ°λ°μλ μμ±λ 벑ν°μ μ©λμ κ΅³μ΄ μ νμ μλ€. 컬λ μ μ μμ μ μ©λμ μ€μ€λ‘ μ‘°μ νκΈ° λλ¬Έμ΄λ€. μ΄κ² λ μ λ€λ¦μ μ₯μ μ΄λ€
Vector E ν΄λμ€μ μ£Όμλ λ©μλ
boolean add(E element)
벑ν°μ 맨 λ€μ element μΆκ°
void add(int index, E element)
μΈλ±μ€ indexμ elementλ₯Ό μ½μ
int capacity()
νμ¬ λ²‘ν°μ μ©λμ 리ν΄
void clear()
벑ν°μ λͺ¨λ μμ μμ
boolean contains(Object o)
벑ν°κ° μ§μ λ κ°μ²΄λ₯Ό oμ΄ ν¬ν¨νκ³ μλ€λ©΄ trueλ₯Ό 리ν΄
E elementAt(int index)
index μμΉμμμ μμ 리ν΄
E get(int index)
index μμΉμμμ μμ 리ν΄
E remove(int index)
index μμΉμμμ μμ μμ
int size()
벑ν°κ° ν¬ν¨λλ μμμ κ°―μ 리ν΄
벑ν°μ λ©μλλ₯Ό μ¬μ©νλ μμ
벑ν°μμμ μ½μ μ 벑ν°μ λμ΄λ μ€κ°μ μμλ₯Ό μ½μ ν μ μμ
μ λ€λ¦ λ§λ€κΈ°
μ λ€λ¦ ν΄λμ€
κΈ°μ‘΄μ ν΄λμ€λ₯Ό λ§λλ λ°©λ²κ³Ό μ μ¬νμ§λ§ μ°¨μ΄μ μ΄ μλ€λ©΄ ν΄λμ€ μ΄λ¦ λ€μμ μΌλ°νλ νμ μ λ§€κ°λ³μλ₯Ό <> μ¬μ΄μ μΆκ°νλ κ²μ μ°¨μ΄κ° μλ€.
μ λ€λ¦ λ©μλ
νλμ λ©μλ μ μΈμΌλ‘ λ§λ€μ΄μ§λ©° λ€λ₯Έ νμ λ€μ μΈμλ‘ λ°μμ νΈμΆ λ μ μλ λ©μλμ΄λ€
μλ₯Ό λ€μ΄μ λ°°μ΄μ 리μ€νΈλ‘ λ³ννλ μ λ€λ¦ λ©μλλ₯Ό μ μνλ μμ
μ¬κΈ°μ 보면 λ©μλλ νλμ΄μμ μ λ€λ¦ νμ μ μ²λ¦¬ν μ μκ³ , λͺ¨λ μ λ€λ¦ νμ λ€μ΄ λ©μλμ λ¦¬ν΄ νμ μ μμΉμ μΆκ°λμ΄μΌνλ€.
Bounded Type Parameter
νμ νλΌλ―Έν°λ€μ boundλ μ μλλ°, boundλλ€λ μλ―Έλ μ νλλ€λ μλ―Έμ΄κ³ , μ½κ² μκ°νλ©΄ λ©μλκ° λ°μ μ μλ νμ μ μ νν μ μλ€λ λ»
WildCard
μλ°μμ μμΌλ μΉ΄λλ "?"μΌλ‘ νμνλ©° μ μ μλ νμ μ μλ―Έν λ μ¬μ©λλ€. μμΌλ μΉ΄λλ λ€μν μν©μμ μ¬μ©λ μ μλ€. λ§€κ°λ³μμ νμ , νλ κ·Έλ¦¬κ³ μ§μλ³μλ‘ μ¬μ©λ μ μλ€.
Objectλ λͺ¨λ μλ° ν΄λμ€λ€μ λΆλͺ¨ νμ μ΄κΈ΄ νμ§λ§ Object 컬λ μ μ΄ λ€λ₯Έ 컬λ μ λ€μ λΆλͺ¨λ μλλ€.
LIst νμ μ λ³μμ Listλ³μλ₯Ό ν λΉνκ² λλ©΄ μ»΄νμΌ μ€λ₯κ° λ°μλλ κ²μ λ³΄κ³ νμΈν μ μλ€.
μ΄λ κ² νκΈ° λλ¬Έμ κ°μ 컬λ μ μμ μλ‘ λ€λ₯Έ νμ λ€μ μΆκ°ν κ²½μ° λ°μν μ μλ μ€λ₯λ₯Ό λ§κΈ° μν κ²μ΄λ€.
Upper Bounded Wildcards
μ΄κ²μ μ¬μ©νλ©΄ λ³μμ λν μ νμ μ€μ¬μ€ μ μλ€.
μ¬μ©νλ λ°©λ²μ "?" μ extends ν€μλ μμ λΆμ¬μ£Όλ©΄ λλ€.
μ¬κΈ°μ sumOfList ν¨μλ Numberμ sub typeκΉμ§ λ€ μ¬μ©λ μ μκ² λλ€.
Unbounded Wildcards
printListλΌλ λ©μλλ₯Ό μκ°ν΄λ³΄μ, printListν¨μμ λͺ©μ μ μ΄λ νμ μ΄λ μ§ μΆλ ₯νκΈ° μν¨μ΄μ§λ§ λΆκ°λ₯νλ€. μλνλ©΄ μ΄κ²μ μ€μ§ Objectμ listλ§ μΆλ ₯νκΈ° λλ¬Έμ΄λ€. μ¦, List, Listλ± μ΄λ° κ²λ€μμ Listμ μλΈνμ μ΄ μλκΈ° λλ¬Έμ΄λ€.
κ·Έλμ μ΄ ν¨μλ₯Ό
μ΄λ κ² μμΌλμΉ΄λμΈ "?" μ μ¬μ©ν΄μ€μ λ³κ²½νκ² λλ©΄
μ΄λ κ² μ¬μ©νλλ°μ λ¬Έμ κ° μλ€!
Lower Bounded Wildcards
μλ upper bounded wildcardκ° λͺ¨λ₯΄λ νμ μ μμΈν νμ μ΄λ μλΈνμ μΌλ‘ λ³νλμ§ μλλ‘ μ ννμΌλ©°, extends ν€μλ μμμ μ¬μ©νλ€λ©΄ lower bounded wildcardλ ν΄λΉ νμ μ super νμ κΉμ§ νμ©ν΄μ£Όλ©°, super ν€μλ μμ μμΌλμΉ΄λμΈ "?" μ λΆνμ μ¬μ©νλ€.
λ λ€λ₯Έ μμλ₯Ό λ€μ΄μ Integerμ listsμ λν λ©μλκ° νμνκ²λλ©΄
List<? super Integer> μ΄λ κ² μμ±ν¨μΌλ‘μ¨
Integerμ superνμ μΈ Integer, Number, Ojbectμ΄λ κ² μ¬μ©ν μ μλ€.
κ·Έλ₯ List μ΄λ κ² μ°λκ²λ³΄λ€ λ²μ©μ±μ΄ λμ΄μ§λ€κ³ μκ°νλ€.
Erasure Type
μ λ€λ¦μ μλ° μΈμ΄λ₯Ό μ¬μ©ν¨μ μμ΄μ μ»΄νμΌ μ, λ λΉ‘λΉ‘ν νμ 체ν¬λ₯Ό κ°λ₯νκ² ν΄μ£Όλ©°, μ λ€λ¦ νλ‘κ·Έλλ°μ λμμ€λ€. μ»΄νμΌλ¬λ μ»΄νμΌ μ, μ λ€λ¦μ λν΄μ type erasureλΌλ νλ‘μΈμ€λ₯Ό μ μ©νλ€
λͺ¨λ νλΌλ―Έν°λ€μ κ·Έλ€μ λ²μ£Όμμμ μ λ€λ¦ νμ μΌλ‘ λ³κ²½νλ€.
νμ μ μμ μ±μ μ μ§νκΈ° μν΄ νμν κ²½μ°, νμ μΊμ€νΈλ₯Ό μ§ν
μμλ₯Ό 보면μ νμΈ
μ΄λ κ² μ§νμ νλ €κ³ νλ©΄
νμ μ΄λ μ΄μ κ° μ μ©λλ©΄μ νΉμ νμ μΌλ‘ μ νλμ§ μμ Tλ₯Ό μμ κ°μ΄ Objectλ‘ λ체λλ€
λ§μ½
μ΄λ κ² νμ μ΄ μ νλμ΄μμ κ²½μ°μλ μ΄ νμ μ μ»΄νμΌ μμ μμ μ νλ νμ μΌλ‘ κ΅μ²΄
μ΄λ κ² μ λ€λ¦μ κ΄ν΄μ μμ보μκ³ , μ λ€λ¦μ νμ μ μ νμ±μ μ ννκ² ν΄μ£Όλ©°, μ ν리μΌμ΄μ μΌλ‘ νμ¬κΈ μΆκ°μ μΈ μ€λ²ν€λ μμ΄ μ λ€λ¦ μκ³ λ¦¬μ¦μ ꡬνμ κ°λ₯νλλ‘ λμμ£Όλκ±° κ°λ€
μ°Έκ³ μ¬μ΄νΈ
λͺ ν μλ° νλ‘κ·Έλλ° - ν©κΈ°ν
Last updated
Was this helpful?