Skip to content

Latest commit

 

History

History
42 lines (27 loc) · 3.06 KB

이왕이면_제네릭_메서드로_만들어라(강철원).md

File metadata and controls

42 lines (27 loc) · 3.06 KB

🚀 Item 30 이왕이면 제네릭 메서드로 만들어라

자바에서의 제네릭은 프로그래밍의 안정성과 유연성을 높이는 핵심적인 방법입니다. 제네릭을 사용하면 컴파일 시에 타입 체크를 통해 많은 프로그래밍 오류를 미연에 방지할 수 있습니다. 이펙티브 자바의 30번 아이템에서는 메서드를 작성할 때 가능하면 제네릭 메서드로 구현하라고 권장합니다. 이 글에서는 제네릭 메서드의 정의, 사용 방법, 그리고 이를 통해 얻을 수 있는 이점들을 자세히 설명하고자 합니다.

📌 제네릭 메서드란 무엇인가?

제네릭 메서드는 메서드 선언 시에 하나 이상의 타입 매개변수를 포함하는 메서드를 말합니다. 이 매개변수는 메서드가 호출될 때 구체적인 타입으로 치환되어 실행됩니다. 제네릭 메서드는 다양한 타입에 대해 유연하게 메서드를 사용할 수 있게 해줌으로써, 코드의 재사용성을 높이고 타입 안전성을 제공합니다.

🎾 제네릭 메서드의 작성 예제

예를 들어, 배열에서 최대값을 찾는 함수를 생각해보겠습니다. 이 함수를 제네릭 메서드로 작성하면 다음과 같습니다

public static <T extends Comparable<T>> T max(T[] array) {
    if (array == null || array.length == 0) {
        throw new IllegalArgumentException("Array cannot be null or empty");
    }
    T max = array[0];
    for (T element : array) {
        if (element.compareTo(max) > 0) {
            max = element;
        }
    }
    return max;
}

이 메서드는 T라는 타입 매개변수를 사용하며, TComparable 인터페이스를 구현해야 합니다. 이렇게 하면 T의 인스턴스들을 서로 비교할 수 있습니다. 이 메서드는 어떤 타입의 배열이든 처리할 수 있고, 해당 타입의 최대값을 안전하게 반환할 수 있습니다.

👍 제네릭 메서드의 장점

  1. 타입 안전성 보장: 제네릭 메서드는 컴파일 시 타입 체크를 수행합니다. 이는 잘못된 타입이 사용되는 것을 방지하며, 실행 시점의 오류를 크게 줄여줍니다.
  2. 코드의 유연성과 재사용성 향상: 하나의 메서드로 다양한 타입을 처리할 수 있습니다. 예를 들어, 위의 max 메서드는 Integer, Double, String 등 어떠한 Comparable을 구현한 타입도 처리할 수 있습니다.
  3. 유지보수의 용이성: 제네릭을 사용함으로써 코드의 의도가 명확해지고, 나중에 코드를 읽거나 수정할 사람이 이해하기 쉽습니다.

🎾 정리

제네릭 메서드는 자바 프로그래밍에서 타입 안전성과 재사용성을 동시에 증가시키는 효과적인 방법입니다. 이펙티브 자바의 권장사항대로, 가능한 한 제네릭 메서드를 사용하여 다양한 타입의 데이터를 안전하고 효율적으로 처리해보세요. 프로그램의 유연성을 높이고, 타입 관련 버그의 가능성을 줄일 수 있습니다.