본문 바로가기

이펙티브 자바

[이펙티브 자바] 아이템 30. 이왕이면 제네릭 메서드로 만들라

제네릭 메서드 :  메서드 선언 시에도 타입 매개변수를 사용하여 메서드의 매개변수 타입 또는 반환 타입을 일반화하는 방법. 제네릭 메서드를 사용하면 메서드를 호출할 때마다 타입을 명시할 필요가 없으며, 여러 종류의 타입에 대해 일반적으로 사용할 수 있는 메서드를 정의할 수 있다.

 

public <T> 반환타입 메서드이름(매개변수) {
    // 메서드 내용
}

 

여기서 <T>는 타입 매개변수를 나타내며, 반환타입이나 매개변수에서 이를 사용할 수 있다.

예를 들어, 다음은 제네릭 메서드를 사용하여 배열의 요소를 출력하는 메서드의 예시이다:

public class ArrayPrinter {
    public static <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

// 사용 예시
Integer[] intArray = {1, 2, 3, 4, 5};
String[] strArray = {"Hello", "World"};
ArrayPrinter.printArray(intArray); // 정수 배열 출력
ArrayPrinter.printArray(strArray); // 문자열 배열 출력

 

클래스와 마찬가지로, 메서드도 제네릭으로 만들 수 있다.

 

결론 : 제네릭 타입과 마찬가지로, 클라이언트에서 입력 매개변수와 반환값을 명시적으로 형변환해야 하는 메서드보다 제네릭 메서드가 더 안전하며 사용하기도 쉽다. 타입과 마찬가지로, 메서드도 형변환 없이 사용할 수 있는 편이 좋으며, 많은 경우 그렇게 하려면 제네릭 메서드가 되어야 한다. 역시 타입과 마찬가지로, 형변환을 해줘야 하는 기존 메서드는 제네릭하게 만들자. 기존 클라이언트는 그대로 둔 채 새로운 사용자의 삶을 훨씬 편하게 만들어줄 것이다.