[ Generic Programming ]
제네릭 프로그래밍은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식.
[ Generics ]
T 라는 가상의 타입에 의해서 parameterized된 클래스
public class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
사용예시
Box<Integer> ingegerBox = new Box<Integer>();
integerBox.set( new Integer(10 );
Box<Event> eventBox = new Box<Event>();
eventBox.set(new OndayEvent("dinner", new MyDate(2017, 2, 10)));
아래와 같이 2개 이상의 type parameter를 가질 수도 있다.
public class Pair<K, V> {
private K key;
private V value;
public void set(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
}
객체를 생성하는 시점에 가상의 타입 K와 V를 실제하는 타입으로 지정해준다.
Pair<String, Integer> p1 = new Pair<String, Integer>();
Pair<String, String> p2 = new Pair<String, String>();
[ class Object vs Generics ]
class Object
public class Box {
private Object t;
public void set(Object t) {
this.t = t;
}
public Object get() {
return t;
}
}
Box box = new Box();
box.set( new Integer(10) );
// 반드시 type casting을 해야한다.
Integer a = (Integer)box.get()
Generics
public class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
Box<Integer> box = new Box<Integer>();
box.set( new Integer(10) );
Integer a = box.get();
'자바프로그래밍' 카테고리의 다른 글
자바 시,분,초 계산 (0) | 2020.03.17 |
---|---|
static , 접근제어 (0) | 2020.02.17 |
인터페이스 (0) | 2020.02.11 |
class Object (0) | 2020.02.05 |
5. 자바 예외처리 (0) | 2019.10.30 |