본문 바로가기
JAVA BASE/GenericsEnumsAnnotation

04. [자바] 제네릭 메서드

by staticClass 2021. 1. 8.

제네릭 메서드?

메서드의 선언부에 리턴타입으로 제네릭 타입이 선언된 메서드를 제네릭 메서드라 한다.

static <T> void sort(List<T> list, Comparator<? super T> c)

 

제네릭 클래스와 제네릭 메소드에 정의된 타입 매개변수는 같은 타입문자 T를 사용해도 전혀 별개의 것이다.

class FruitBox<T> {
    ...
    static <T> void sort(List<T> list, Comparator<? super T> c)
    ...
}

위의 코드에서 클래스 FruitBox에 선언된 매개변수 T와 메소드 sort에 선언된 매개변수 T는 문자는 같지만 다른 것이다.

그리고 메소드가 static이지만 메서드에 제네릭 타입을 선언하고 사용하는 것은 가능하다.

메서드에 선언된 제네릭 타입은 지역 변수를 선언한 것과 같다고 생각하면 쉽다

 

제네릭 메소드는 매개변수의 타입이 복잡할 때도 유용하다

public static void printAll(ArrayList<? extends Product> list2
                          , ArrayList<? extends Product> list2){
     ...                         
}

위의 코드를 간략하게 바꾸면..

public static <T extends Product> void printAll(ArrayList<T> list2
                                         , ArrayList<T> list2){
     ...                         
}

 

댓글