반응형
제네릭 클래스
JDK1.5 부터 도입되었으며 주로 Map 부분에서 볼 수 있다.
ArrayList<String> tmpArray = new ArrayList<String>();
처럼 사용하게 된다.
이렇게 되면 tmpArray 에는 String 형의 Object만 입력이 가능하게 된다.
(다른 형태의 객체 입력 시 실행 시점에서 에러가 발생한다.)
이를 통해 ArrayList에 형에 상관없이 무조건적으로 어느 객체나 입력가능함으로써
생길 수 있는 예상치 못한 에러를 방지할 수 있다.
ArrayList 는 제네릭 클랙스로 만들어진 것이며
사용자 개인도 Class 이와 같은 형태로 Class를 만들어 사용할 수 있다.
사용자가 만든 제네릭 클래스
package genericclass;
import java.util.ArrayList;
/**
* 제네릭 클랙스(T역활) 생성
* 결국 collection 들도 아래와 같은 형태로 generic 화 되어 있음
*
* @author lsk
* @since 2009.06.22
*/
public class GenericEx1<T> {
T[] v;
public void set(T[] n) {
v = n;
}
public void print() {
for(T s : v) {
System.out.println(s);
}
}
}
/* 제네릭 메인
package genericclass;
/**
* 만든 제네렉 클래스 사용해보기
*
* @author lsk
* @since 2009.06.22
*
*/
public class GenericEx1Main {
public static void main(String[] args) {
GenericEx1<String> t = new GenericEx1<String>();
String[] ss = {"애", "아", "서"};
t.set(ss);
t.print();
// GenericEx1<Integer> t2 = new GenericEx1<Integer>();
//
// Integer[] nn = {1, 2, 3};
// t2.set(nn);
// t2.print();
/* ===== 좋은 방법이 아니라고 함 j ===== */
GenericEx1 t3 = new GenericEx1();
Integer[] nn = {1, 2, 3};
t3.set(nn);
t3.print();
}
}