PHpullh
학습 라이브러리/Java/제네릭 메서드

JAVA · 람다/메서드

제네릭 메서드

타입 파라미터를 메서드 레벨에서 선언하여 재사용 가능한 유틸리티를 만듭니다.

람다/메서드중급generic제네릭타입파라미터bounded

핵심 설명

타입 파라미터를 메서드 레벨에서 선언하여 재사용 가능한 유틸리티를 만듭니다.

Java code

import java.util.*;

public class GenericMethods {
    // 제네릭 메서드 — 반환 타입 앞에 <T> 선언
    static <T> List<T> listOf(T... items) {
        return new ArrayList<>(Arrays.asList(items));
    }

    // Bounded 타입 파라미터
    static <T extends Comparable<T>> T max(T a, T b) {
        return a.compareTo(b) >= 0 ? a : b;
    }

    // 여러 타입 파라미터
    static <K, V> Map<K, V> mapOf(K key, V value) {
        Map<K, V> map = new HashMap<>();
        map.put(key, value);
        return map;
    }

    public static void main(String[] args) {
        List<String> names = listOf("Alice", "Bob");
        int bigger = max(10, 20);             // 타입 추론
        String later = max("apple", "banana");
        Map<String, Integer> m = mapOf("age", 30);
        System.out.printf("%s, %d, %s, %s%n", names, bigger, later, m);
    }
}

학습 팁

대부분의 경우 타입 인자를 명시하지 않아도 컴파일러가 추론합니다. 추론 실패 시에만 ClassName.<Type>method()로 명시하세요.

주의할 점

static void sort(T[] arr)에서 TComparable 바운드가 없으면 비교할 수 없습니다.

자주 묻는 질문

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

타입 파라미터를 메서드 레벨에서 선언하여 재사용 가능한 유틸리티를 만듭니다.

제네릭 메서드 학습 시 주의할 점은 무엇인가요?

static void sort(T[] arr) 에서 T 에 Comparable 바운드가 없으면 비교할 수 없습니다.