[Java] 제네릭 메서드(Generic Method)
제네릭 메소드에 대해서 알아보도록 하겠습니다.
제네릭 메소드는 매개 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드를 말합니다.
구현을 하기 위해선 리턴 타입 앞에 <>다이아몬트 기호를 추가하고, 타입 파라미터를 기술한 다음
리턴 타입과 매개타입으로 타입파라미터를 사용하면 됩니다.
public <타입 파라미터 . . . > 리턴타입 메소드명 (매개변수, . . . ) { . . . }
제네릭 메소드는 두 가지 방식으로 호출할 수 있습니다. 코드에서 타입 파라미터의 구체적인 타입을 명시적으로 지정해도 되고, 컴파일러가 매개값의 타입을 보고 구체적인 타입을 추정하도록 할 수도 있습니다.
리턴타입 변수 = <구체적인타입> 메소드명(매개값); // 명시적으로 구체적 타입을 지정
리턴타입 변수 = 메소드명(매개값); // 매개값을 보고 구체적 타입을 추정
저는 케바케이지만... 명시적으로 타입으로 호출하는 방법을 선호합니다. 누가봐도 이게 제네릭 메소드라는 것을 알 수 있으니까요...ㅎㅎ
예제를 보겠습니다.
Box.java
Util.java
Main.java
예제는 이렇습니다.
Box<T> 라는 제네릭 클래스를 만든 후
제네릭 메서드 <T> box<T> boxing(T t); 를 포함하는 Util 클래스를 만듭니다.
이제 메인에서 Util안에 있는 제네릭메서드는 정적메서드이기 때문에 인스턴스화 없이 바로 접근 가능합니다.
아까 설명한 2가지 호출 방법을 통해 아래와 같이 예제에서 둘다 사용해서 제네릭메서드를 호출 할 수 있습니다.
Util.<Integer>boxing(100); // 구체적타입을 명시하는 호출 방법
Util.boxing("암묵적호출"); // 암묵적 호출 방법
제네릭메서드는 호출시 사용자가 정의한 타입 파라미터를 이용해서 메서드 내부적으로 모든 타입을 매핑시키고
작업을 다 한 후 여기서는 메서드 리턴타입 Box<T>를 리턴합니다.
출력하면 결과가 잘 나오는 것까지 확인 하실 수 있습니다.
출력결과
intValue : 100
stringValue : 암묵적호출
선행되어야 할 개념
2017/07/10 - [Java] - [Java] Generic(제네릭)
2017/07/13 - [Java] - [Java] 멀티 타입 파라미터 (Generic)