개발/Java

Java 제네릭(Generic) 타입 이해하기

이쪽저쪽살짝 2023. 4. 7. 20:50
반응형

1. 제네릭 타입이란?
Java의 제네릭(Generic) 타입은 클래스, 인터페이스, 메소드에 다양한 타입을 사용할 수 있게 도와주는 기능입니다. 제네릭을 사용하면 다양한 타입에 대해 동일한 코드를 작성할 수 있으며, 컴파일 시점에 타입 검사를 통해 안정성을 높일 수 있습니다.

예시:

List<String> stringList = new ArrayList<>();
List<Integer> integerList = new ArrayList<>();

2. 제네릭 클래스와 인터페이스
제네릭 클래스와 인터페이스는 다양한 타입의 객체를 다룰 수 있습니다. 타입 파라미터를 꺽쇠 괄호 <> 안에 지정하고, 클래스 또는 인터페이스 이름 뒤에 위치합니다.

 

예시:

public class GenericBox<T> {
    private T object;

    public void setObject(T object) {
        this.object = object;
    }

    public T getObject() {
        return object;
    }
}

3. 제네릭 메소드
제네릭 메소드는 다양한 타입의 매개변수를 처리할 수 있습니다. 타입 파라미터를 메소드 선언부에 위치시킵니다.
예시:

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

4. 와일드카드와 제네릭의 한계
제네릭 타입의 변수에 다른 제네릭 타입의 객체를 대입하려면, 와일드카드를 사용해야 합니다. 와일드카드는 '?' 기호로 표시되며, 모든 타입을 나타냅니다.
예시:

List<?> list = new ArrayList<Integer>();

5. 제네릭 타입 제약
타입 파라미터에 제약을 걸어 특정 클래스를 상속받거나 인터페이스를 구현한 타입만 허용할 수 있습니다. 'extends' 키워드를 사용해 제약을 표시합니다.

 

예시:

public class GenericNumberContainer<T extends Number> {
    private T number;

    public void setNumber(T number) {
        this.number = number;
    }

    public T getNumber() {
    	return number;
    }
}

 

6. 제네릭 타입의 실용적인 활용
제네릭 타입은 코드의 재사용성을 높이고 타입 안정성을 제공하여 개발자들이 선호하는 기능입니다. 여러 가지 실용적인 예시를 살펴보겠습니다.

 

예시 1: 컬렉션을 사용할 때

List<String> names = new ArrayList<>();
names.add("John");
names.add("Jane");

for (String name : names) {
    System.out.println(name);
}

예시 2: 사용자 정의 클래스에서 제네릭 사용하기

public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }
}

Pair<String, Integer> agePair = new Pair<>("John", 28);
System.out.println("Name: " + agePair.getKey() + ", Age: " + agePair.getValue());

Java 제네릭 타입에 대해 설명하고 예시를 제공하였습니다. 제네릭 타입을 사용하면 코드의 재사용성을 높이고 타입 안정성을 제공할 수 있으므로, Java 개발자들에게 꼭 필요한 기술입니다. 이러한 기초를 바탕으로 제네릭 타입을 자유롭게 활용하시길 바랍니다.

반응형