2013년 10월 24일 목요일

자바 제너릭 (Java Generic), JAVA강좌 JAVA에서는 객체들을 그룹핑 하여 관리할 컬렉션(Collection)이라는 자료 구조를 제공합니다.

자바 제너릭 (Java Generic), JAVA강좌

JAVA에서는 객체들을 그룹핑 하여 관리할 컬렉션(Collection)이라는 자료 구조를 제공합니다. 이에 따라 어떤 컬렉션에 어떠한 객체들이 들어올지 모르므로 모든 자바 객체의 최상위 클래스인 Object로 저장되어 관리되도록 설계되어 있습니다.

JDK5.0에서는 GENERIC이 포함되어 실행 전 컴파일 단계에서 특정 Collection에 프로그래머가 원하는 객체 타입을 명시하여 명시된 객체가 아니면 절대 저장이 안되게 할 수 있습니다…

Generic Type은 꺽쇠(<>) 사이에 컴파일 할 당시 사용될 객체를 적어 놓으면 객체를 저장할 때 제너릭 타입으로 저장 됩니다. 

API에서 전달되는 객체가 현 객체 내에서 하나의 자료형으로 쓰일 때는 <T>로 유도하며 전달되는 객체가 현 객체내에서 하나의 요소로 자리 잡을때는 <E>, 그리고 Key값으로 사용될 때는 <K>로, Value 값으로 사용될 때는 <V>로 표현하고 있습니다.

C++에서는 템플릿(Generics)이 존재하는데 자바에서도 Collection 클래스에 템플릿 기능이 추가되었다고 보시면 되겠네요~


아래 예를 통해 보시죠`~~

[GenericClass.java]

import static java.lang.System.out;

//Generic Type을 적용한 클래스 선언 상징적으로 T라는 문자를 사용했는데 큰 의미는 없음
public class GenericClass<T> {

    //Generic Type 배열선언. T라는 명칭은 위에서 정의한 꺽쇠안의 T와 일치해야 하며 
    //이 부분은 외부에서 현재 클래스가 생성될때 정의되는 제너릭 타입으로 정확히 대체됨
    //예제의 GenericTest.java에서 <String>을 보시면 됩니다. 즉 GenericTest.java에서
    //사용한 GenericClass<String> t = new GenericClass<String>();부분에 의해
    //String으로 대체됩니다.
    T[] v;
    
    public void set(T[] n) {
        v = n;
    }
    
    //JDK1.5에서 개선된 루프 형태의 for를 이용하여 제너릭 타입 배열을 참조하는
    //v의 요소들을 하나씩 꺼내 s 변수에 대입하고 출력 
    public void print() {
        for(T s: v) {
            out.print(s);
        }
    }
}

댓글 없음:

댓글 쓰기