본문 바로가기

카테고리 없음

제네릭이란?

자바에서 제네릭이란

데이터 타입을 일반화(generalize)한다는 의미다.

클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일시 미리 지정하는 방법이다.

 

1. 클래스나 메소드 내부에서 사용되는 객체 타입의 안정성을 높일 수 있다.

2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. 

   --> JDK 1.5 이전 버전에서는 여러 타입을 사용하는 클래스나 메소드에서 

   인수나 변환값으로 Object 타입을 사용했다.

   이 경우, 반환된 Object 객체를 다시 원하는 타입으로 변환해야 하며, 이때 오류가 날 수 있다.

   JDK 1.5부터는 제네릭을 사용하면 컴파일 시 미리 타입이 정해지므로,

   타입 검사나 타입 변환과 같은 번거로운 작업을 생략 할 수 있다.

 

제네릭은 자바 코드에서 선언되고

사용된 제네릭 타입은 컴파일 시 컴파일러에 의해 자동으로 검사되어 타입 변환된다.

이후 코드 내 모든 제네릭 타입은 제거되어, 컴파일된 class 파일에는 어떠한 제네릭 타입도 포함되지 않게 된다.

이런 식으로 동작하는 이유는 제네릭을 사용하지 않는 코드와의 호환성을 유지하기 위해서다.


제네릭 선언 및 생성

class Test<T> {

       T element;

       void setElement(T element) { this.element = element; }

       T getElement() { return element; }

}

 

참고 : http://www.tcpschool.com/java/java_generic_concept