ν°μ€ν 리 λ·°
π‘ μ λ€λ¦(Generic)μ΄λ?
μ λ€λ¦ νλ‘κ·Έλλ°μ μΌλ°μ μΈ νλ‘κ·Έλ¨μ΄μ΄λΌλ λ»μΈλ° λ°μ΄ν° νμ (data type)μ μΌλ°ν(generalize)νλ€λΌλ κ²μ μλ―Ένλ€. λ€μ λ§ν΄ λ³μμ μ μΈμ΄λ λ©μλμ 맀κ°λ³μλ₯Ό νλμ μ°Έμ‘° μλ£νμ΄ μλ μ¬λ¬ μλ£νμΌλ‘ λ³ν, λ체λ μ μλλ‘ νλ‘κ·Έλλ°νλ κ²μ΄λ€. μΌλ°μ μΌλ‘ μλ£νμ μ μΈνκ³ λ³μλ₯Ό μ μΈνλ κ²μ΄ κΈ°λ³ΈμΈλ° νλμ μλ£νμ κ΅νλμ§ μκ³ μ¬λ¬ μλ£νμΌλ‘ λ³νλ μ μλ€.
μ€μ μ¬μ©λλ μ°Έμ‘° μλ£νμΌλ‘μ λ³νμ μ»΄νμΌλ¬κ° κ²μ¦νλ―λ‘ μμ μ μΈ νλ‘κ·Έλλ° λ°©μμ΄λ€. μ΄λ¬ν κ°λ μ μλ° 5.0λΆν° λμ¨ κΈ°μ μ΄κ³ μ΄μ μμλ μ¬λ¬ νμ μ μ¬μ©νλ λλΆλΆμ ν΄λμ€λ λ©μλμμ μΈμλ λ°νκ°μΌλ‘ Object νμ μ μ¬μ©νμλλ° μ΄λ° κ²½μ°μλ λ°νλ Object κ°μ²΄λ₯Ό λ€μ μνλ νμ μΌλ‘ λ³νν΄μΌνλ©°, μ€λ₯κ° λ°μν κ°λ₯μ±λ μμλ€. μ λ€λ¦μ μ¬μ©νλ©΄ μ»΄νμΌ μμ 미리 νμ μ΄ μ ν΄μ§λ―λ‘ νμ κ²μ¬λ λ³νκ°μ λ²κ±°λ‘μ΄ μμ μ μλ΅ν μ μκ² λμλ€.
π‘ μ λ€λ¦μ μ μΈ λ° μμ±
μλ°μμ μ λ€λ¦μ ν΄λμ€μ λ©μλμλ§ λ€μκ³Ό κ°μ΄ μ μΈν μ μλ€.
public class GenericExam<T> {
private T element;
public void setElement(T element) {
this.element = element;
}
public void getElement(T element) {
return element;
}
'T'λ₯Ό νμ λ³μ(type variable)λΌκ³ νλ©° μμμ μ°Έμ‘°ν νμ μ μλ―Ένλ€. κΌ Tλ‘ μμ±νμ§ μκ³ λ€λ₯Έ λΆμλ₯Ό μ¬μ©ν΄λ μκ΄ μμΌλ©°, μ¬λ¬ κ°μ νμ λ³μλ₯Ό μΌνλ‘ κ΅¬λΆν΄ λͺ μν μ μλ€. νμ λ³μλ ν΄λμ€λΏμλλΌ λ©μλμ 맀κ°λ³μλ λ°νκ°μΌλ‘λ μ¬μ©ν μ μλ€.
μ£Όμν΄μΌν μ μ static ν€μλμλ Tλ₯Ό μ¬μ©ν μ μλ€. μμ±λ λ νμ μ΄ κ²°μ λλλ° static ν€μλλ₯Ό μ¬μ©νλ©΄ νμ κ°μ΄ 미리 κ³ μ μ΄λμ΄ λ²λ¦¬κΈ° λλ¬Έμ μ¬μ©ν μ μλ€.
μμμ μ μΈν μ λ€λ¦ ν΄λμ€λ₯Ό μμ±ν λλ νμ λ³μ μ리μ μ¬μ©λ μ€μ νμ μ λͺ μν΄μΌνλ€. μ€μ νμ μ λͺ μν΄μ€ λλ λνΌ(wrapper)ν΄λμ€λ₯Ό μ¬μ©ν΄μΌ νλ€.
GenericExam<Integer> example = new GenericExam<Integer>();
λ€μ΄μλͺ¬λ μ°μ°μ λ΄λΆμμ μλ£νμ μλ΅ κ°λ₯νλ€.
ArrayList<String> list = new ArrayList<>();
컬λ μ νλ μμν¬μ λν΄ κ³΅λΆλ₯Ό νλ €λ©΄ μ λ€λ¦ νλ‘κ·Έλλ°μ λν΄ μμμΌνλ€. μ λ€λ¦ νλ‘κ·Έλλ°μ΄ 컬λ μ νλ μμν¬μμ λ§μ΄ μ¬μ©μ΄ λλ€. μλ°μμ μ 곡ν΄μ£Όλ 컬λ μ νλ‘λλ°μ΄λ λλλ©΄ μλ£κ΅¬μ‘° μκ³ λ¦¬μ¦μ λν λΌμ΄λΈλ¬λ¦¬κ° μ 리λμ΄μλλ° κ·Έκ±Έλ§νλκ²μ΄λ€. μ§μ ꡬννμ§ μκ³ λ μλ£κ΅¬μ‘°λ₯Ό μ¬μ©ν μ μλλ‘
μ λ€λ¦ νλ‘κ·Έλλ°μ μλ° 5.0λΆν° λμ¨κΈ°μ μ΄λ€. μΌλ°μ μΈ νλ‘κ·Έλλ°μ΄λΌλ λ»μΈλ° μλ£νμ μ μΈνκ³ λ³μλ₯Ό μ μΈνλ κ²μ΄ κΈ°λ³ΈμΈλ° νλμ μλ£νμ κ΅νλμ§ μκ³ μ¬λ¬ μλ£νμΌλ‘ λ³νλ μ μλλ‘ νλ‘κ·Έλλ°νλ λ°©μ
λ³μμ μ μΈμ΄λ λ©μλμ 맀κ°λ³μλ₯Ό νλμ μ°Έμ‘° μλ£νμ΄ μλ μ¬λ¬ μλ£νμ γ λ³νλ μ μλλ‘ νλ‘κ·Έλλ°νλ λ°©μ
컬λ μ νλ μμν¬μμ λ§μ΄ μ¬μ©λκ³ μμ
λͺ¨λ μλ£νμ Objectλ₯Ό μμνκ³ μμ΄μ λͺ¨λ objectλ‘ νλ³νμ΄ κ°λ₯νλ€.
μ λ€λ¦ ν΄λμ€ μ μνκΈ°
μ¬λ¬ μ°Έμ‘° μλ£νμΌλ‘ λ체 λ μ μλ λΆλΆμ νλμ λ¬Έμλ‘ νν
μ΄ λ¬Έμλ₯Ό μλ£ν 맀κ°λ³μλΌκ³ ν¨
public class GenericPrinter<T> {
private T material;
public void setMaterial(T material) {
this.material = material;
}
public void setMaterial(T material) {
return material;
}
μ¬κΈ°μ μ¬μ©λ Tλ typeμ μ½μλ‘ μλ£ν 맀κ°λ³μμ΄λ€
μ¬μ©ν λλ TμμΉμ μ°Έμ‘°ν ν΄λμ€λ₯Ό μ°λ©΄ λλ€. μ°Έμ‘°ν...
μλ£ν λ§€κ° λ³μ T
typeμ μλ―Έλ‘ Tλ₯Ό λ§μ΄ μ¬μ©ν¨
<T>μμ <>λ λ€μ΄μλͺ¬λ μ°μ°μλΌκ³ ν¨
μ λ€λ¦μμ μλ£ν μΆλ‘ (μλ° 10λΆν°)
ArrayList<String> list = new ArrayList<>(); => var list = new ArrayList<String>():
μ λ€λ¦ ν΄λμ€ μ¬μ©νκΈ°
GenericPrinter<Powder> powderPrint = new GenericPrinter<Powder>();
powderPrint.setMaterial(new Powder());
Powder powder = powderPrinter.getMaterial(); //λͺ
μμ ν λ³νμ νμ§ μμ
Tλ‘ μ μν λΆλΆμ μ¬μ©ν μ°Έμ‘° μλ£νμ λ£μ΄μ ν΄λμ€ μμ±
getMaterial() λ©μλκ° νΈμΆ λ λ λ°λΌ κ°μ νλ³νμ νμ§ μμλ λ¨
μ λ€λ¦μμ λμ λ μλ£νμ λͺ μνμ§ μμ κ²½μ°μλ (μλ£νμ λͺ μνμ§ μκ³ μ¬μ©ν μλ μλ€) μλ£νμ λͺ μνλΌκ³ κ²½κ³ νμκ° λνλλ€. νμ¬ λ°ν νμ λ°λΌ κ°μ ν λ³νμ ν΄μ£Όμ΄μΌν¨
ArrayList list = new ArrayList
T extends ν΄λμ€
Tκ° μ¬μ©λ ν΄λμ€λ₯Ό μ ννκΈ° μν΄ μ¬μ©νλ€.
μ λ€λ¦ λ©μλ νμ©νκΈ°
λ©μλμ 맀κ°λ³μλ₯Ό μλ£ν 맀κ°λ³μλ‘ μ¬μ©νλ κ²½μ°
μλ£ν λ§€κ° λ³μκ° νλ μ΄μμΈ κ²½μ°
μ λ€λ¦ λ©μλμ μΌλ° νμ
public <μλ£ν 맀κ°λ³μ> λ°νν λ©μλ μ΄λ¦(μλ£ν 맀κ°λ³μ ...) {}
μλ£ν 맀κ°λ³μκ° λ κ°μΈ κ²½μ°
public class Point<T, V> {
T x;
V y;
Point(T x, V y) {
this.x = x;
this.y = y;
}
//μ λ€λ¦ λ©μλ
public T getX() {
return x;
}
public V getY() {
return y;
}
}
- Total
- Today
- Yesterday
- Algorithm
- κ²μν μ‘°ν
- typeAliases
- μ΄ν΄λ¦½μ€ νκΈ μΈμ½λ©
- μλ°
- κ°λ°
- μ 체κ²μλ¬Ό μ‘°ν
- mysqlμ€μΉ
- tomcatμ€μΉ
- μ΄ν΄λ¦½μ€ μ€μΉ
- κ²μν μμ
- java jdk μ€μΉ
- μ¨λ¦¬μμ€
- κ°λ°ν경ꡬμΆ
- java νκ²½λ³μ
- κ²μνλ§λ€κΈ°
- μκ³ λ¦¬μ¦
- μ€νλ§λΆνΈ μλμμ±
- λ³λͺ μ²λ¦¬
- λΆνΈ μλμμ±
- Java
- κ²μλ¬Όμ‘°ν
- μλ£κ΅¬μ‘°
- κ²μλ¬Ό μμ
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |