프로그래밍/Java

[Java] 제네릭 메서드(Generic Method)

Lim-Ky 2017. 7. 15. 01:43
반응형

제네릭 메소드에 대해서 알아보도록 하겠습니다.


제네릭 메소드는 매개 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드를 말합니다. 

구현을 하기 위해선 리턴 타입 앞에 <>다이아몬트 기호를 추가하고, 타입 파라미터를 기술한 다음 

리턴 타입과 매개타입으로 타입파라미터를 사용하면 됩니다. 


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)






반응형