16.2 제네릭 메소드


1. 요술 포장 기계 🏭

제네릭은 클래스 전체에 적용할 수도 있지만, 특정 메소드 하나만 제네릭으로 만들 수도 있습니다. 이것을 제네릭 메소드라고 합니다. 마치 들어오는 재료에 따라 자동으로 포장지가 바뀌는 요술 기계와 같습니다.

Generic Method Machine

  • 일반 메소드: Box boxing(Object t) -> 리턴 타입이 고정됨.
  • 제네릭 메소드: <T> Box<T> boxing(T t) -> 들어오는 T에 따라 리턴 타입이 Box<Integer>, Box<String> 등으로 변신함.



2. 선언 방법

리턴 타입 앞에 <T>를 붙여주면 됩니다.

//     [타입파라미터] [리턴타입] [메소드명] ( [매개변수] )
public    <T>      Box<T>    boxing   (   T t    ) {
    Box<T> box = new Box<>();
    box.set(t);
    return box;
}



3. 사용 방법 (자동 유추)

메소드를 호출할 때 타입을 명시해도 되지만, 대부분은 컴파일러가 매개변수를 보고 알아서 추측합니다.

// 1. 명시적 방법 (잘 안 씀)
Box<Integer> box1 = <Integer>boxing(100);

// 2. 자동 유추 (권장)
// 100을 넣었으니 T는 Integer겠군! -> 리턴은 Box<Integer>가 됨.
Box<Integer> box2 = boxing(100); 

// "Hong"을 넣었으니 T는 String이겠군! -> 리턴은 Box<String>이 됨.
Box<String> box3 = boxing("Hong");

핵심 요약: 제네릭 메소드는 “입력값의 타입에 따라 결과물의 타입도 유연하게 바뀌는” 아주 똑똑한 메소드입니다.


코딩 영단어 학습 📝

코딩에서 영어 단어의 의미만 정확히 이해해도 절반은 성공입니다! 오늘 배운 핵심 영단어들을 다시 한번 짚고 넘어가 볼까요?

  • Method: 메소드, 방법. (클래스 전체가 아니라, 특정 함수(메소드) 하나에만 제네릭 <T>을 걸어두어, 매개변수로 무엇이 들어오느냐에 따라 리턴 타입이 마법처럼 휙휙 바뀌게 만드는 요술 기계)
  • Inference: 인퍼런스, 추론. (자바 컴파일러가 매개변수로 들어온 값을 쓱 보고 “아, 이건 정수(Integer)니까 <T>Integer겠군!” 하고 똑똑하게 알아맞히는 자동 유추 능력)
서브목차