μλ°μμ μ λ€λ¦(generic)μ΄λ λ°μ΄ν° νμ
μ μΌλ°ννλ κ²μ μλ―Ένλ€.
λ λ§μ΄μΌ?
λ°μ΄ν° νμμ μμ‘΄νμ§ μκ³ , νλμ κ°μ΄ μ¬λ¬ λ€λ₯Έ λ°μ΄ν° νμ μ κ°μ§ μ μλλ‘ νλ λ°©λ²μ΄λΌκ³ νλ€.
-μ리νμμ: μ리λ₯Ό λΉμλκ³ μ΄λ€ μ리μΈμ§ νμν΄μ£Όκ³ , κ·Έ μ리μ λ€μ΄κ°λ typeλ§ νν
μλ°μμ λ°°μ΄ λ¦¬μ€νΈ, μ°κ²° 리μ€νΈλ₯Ό μμ±ν λ νν
ArrayList<Integer> list1 = new ArrayList<Integer>();
//<> μμ λ€μ΄κ°λ νμ μ μ§μ ν΄μ€λ€.
μ΄ λ String νμ λ μ§μν μ μκ³ , Integer νμ λ μ§μνλ μλ£κ΅¬μ‘°λ₯Ό λ§λ€κ³ μΆλ€λ©΄, νλνλ κ°κ° λ°λ‘ λ§λλ κ²μ΄ μλλΌ, μ λ€λ¦μ΄λΌλ κ²μ μ¬μ©νμ¬ ν¨μ¨μ μΈ μ½λλ₯Ό 지 μ μλ€.
μ¦, νλμ νΉμ νμ μ 미리 μ§μ ν΄μ£Όλ κ²μ΄ μλ, νμμ μν΄ μ§μ ν μ μλλ‘ νλ κ²μ΄ μΌλ°(Generic) νμ μΈ κ²μ΄λ€.
=> μ μΈνλ κ³³μ΄ μλλΌ, μ΄μ©νλ κ³³μμ νμ μ μ§μ νλ κΈ°λ²!!
-μ λ€λ¦μ λ³΄ν΅ μλμ κ°μ νμ λ€μ΄ λ§μ΄ μ°μ΄κ³ , ν΅μμ μΌλ‘ μλμ κ°μ΄ νννλ€.
<T> : Type
<E> : Element
<K> : Key
<V> : Value
<N> : Number
class MyArray<T>{
T element;
void setElement(T element) {this.element = element;}
T getElement() { return element;}
}
//T = νμ
λ³μ, μμμ μ°Έμ‘°ν νμ
, ν΄λμ€ λΏλ§ μλλΌ
λ©μλμ 맀κ°λ³μλ λ°νκ°μΌλ‘λ μ¬μ©ν μ μλ€.
-μ λ€λ¦ ν΄λμ€λ₯Ό μμ±ν λμλ νμ λ³μ μ리μ μ¬μ©ν μ€μ νμ μ λͺ μν΄μΌ νλ€.
MyArray<Integer> myArr = new MyArray<Integer>();
//MyArray ν΄λμ€μ μ¬μ©λ νμ
λ³μλ‘ Integer μ¬μ©!
μ½νλ¦°μ ν΄λμ€λ μλ°μ λ§μ°¬κ°μ§λ‘ Type 맀κ°λ³μλ₯Ό κ°μ§ μ μλ€.
μλ°μμ μ¬μ©νλ Genericμ²λΌ μ¬μ©νμ§λ§, μ½νλ¦°μ Genericμ μ μν ν΄λμ€λ₯Ό μμλ°μ λ λͺ
μμ μΌλ‘ μ§μ ν΄μΌ νλ€.
=>μ λ€λ¦ μ μλ₯Ό ν΄μ£Όμ΄μΌ κ°μ²΄λ‘ λ§λ€μ΄μ§λ€!
class Box**<T>**(t: T){
var value = t
}
μ¬κΈ°μ type μΈμλ₯Ό μ£Όλ©΄ λλ€.
val box: Box<Int> = Box<Int>(1)
μ΄λ₯Ό μμλ°λ ν΄λμ€μμλ λ€μκ³Ό κ°μ΄ ꡬννλ€.
μ°Έμ‘°: https://st-lab.tistory.com/153