16.2 제네릭 메소드
1. 요술 포장 기계 🏭
제네릭은 클래스 전체에 적용할 수도 있지만, 특정 메소드 하나만 제네릭으로 만들 수도 있습니다. 이것을 제네릭 메소드라고 합니다. 마치 들어오는 재료에 따라 자동으로 포장지가 바뀌는 요술 기계와 같습니다.
- 일반 메소드:
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겠군!” 하고 똑똑하게 알아맞히는 자동 유추 능력)
서브목차