제네릭(Generic)은 API Document 해석을 위해 학습이 필요합니다.

변수 앞에 붙이는 타입을 잘못 기재하는 것을 방지하기 위한 목적으로 Java 8부터 제네릭이 출현하였습니다.

정식적으로 제공된 것은 Java 5부터 였으나, Java 8부터 주목받기 시작했습니다.

 


 

 

제네릭을 학습하기에 앞서, 알아야할 용어를 정리하였습니다.

 

제네릭 타입 :
제네릭 타입은 제네릭 인터페이스와 제네릭 클래스을 의미합니다.


제네릭 메소드 :
메소드에도 제네릭 문법( <> )이 적용 가능합니다.


타입 파라미터(Type Parameter, 타입 매개변수) :
타입 파라미터는 전달인자로 "참조타입의 이름"을 받는 목적의 파라미터입니다. 기본타입은 없습니다.

- 다음은 타입 파라미터의 문법입니다. 타입 파라미터는 최소 1개 이상 선언해야 합니다.
  EX) <E>, <T>, <E, T>

- 다음은 타입 파라미터의 예시입니다.
  EX)
  class ArrayList<E>
  여기서 다이아몬드 기호에 할당되는 단대문자 'E'가 바로 타입 파라미터입니다.

 

타입 파라미터의 예시 코드입니다.

 

class ArrayList<E> { // E : Element
    // sample code
    
    List<String> list = new ArrayList<String>(); // 좌, 우항 모두 타입 파라미터는 같아야 함.
}

 


 

제네릭은 참조타입 간의 강제 형 변환을 하는 것이 주 목적입니다.

간단한 예제로 살펴보겠습니다.

 

Box 클래스

@NoArgsConstructor
@Getter @Setter
public class Box<T> {
    private T t;
	
} // end class

 

실행 클래스

 

@Log4j2
public class BoxExample {

	
    public static void main(String[] args) {
        // 1. 제네릭 클래스로부터 상자를 생성
        Box<String> box = new Box<>();
		
        // 2. 상자에 객체를 넣음
        box.setT("hello");
		
        // 3. 상자에서 다시 꺼냄
        String str = box.getT();
		
        // 4. 꺼낸 객체를 출력
        log.info("str : {}", str);
        
    } // main
	
} // end class

 

제네릭을 사용하게 되면 컴파일 시 강한 타입 체크가 가능하고,

가장 큰 이점은 더 이상 형 변환할 필요가 없다는 것입니다.

 

 

 

 

 

+ Recent posts