자바프로그래밍

제네릭 프로그래밍

제주도소년 2020. 2. 12. 14:03

[ 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