본문 바로가기

프로그램/java

제네릭 클래스 관련

반응형

제네릭 클래스
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();
    }
}