Java/자바 정리

119. 타입을 자유롭게! – 제네릭 클래스 만들기

코딩하는냥이 2025. 5. 15. 10:07
반응형

이번 글에서는 클래스 정의 시 타입을 고정하지 않고,
사용하는 시점에 타입을 지정할 수 있도록 만드는 제네릭(Generic) 클래스를 배워봅니다.
같은 클래스라도 다양한 타입에 유연하게 대응할 수 있어 코드의 재사용성이 크게 향상됩니다.


📌 예제 코드

package ch13.sec01;

public class Box<T> {
    public T contesnt;  // 제네릭 타입 필드
}
package ch13.sec01;

public class GenericExample {
    public static void main(String[] args) {
        Box<String> box1 = new Box<>();
        box1.contesnt = "Hello";        // 문자열 저장
        String str = box1.contesnt;     // 타입 캐스팅 없이 바로 사용
        System.out.println(str);

        Box<Integer> box2 = new Box<>();
        box2.contesnt = 100;            // 정수 저장
        int val = box2.contesnt;        // 자동 언박싱
        System.out.println(val);
    }
}

💻 실행 결과

Hello
100

💬 코드 설명

  • Box<T> 클래스는 타입 매개변수 T를 사용하는 제네릭 클래스입니다.
    • T는 클래스를 사용할 때 실제 타입으로 대체됩니다.
  • Box<String>은 T가 String으로, Box<Integer>는 T가 Integer로 지정됩니다.
  • box1.contesnt는 문자열이고, box2.contesnt는 정수이기 때문에
    형 변환 없이도 타입 안정성이 보장됩니다.
  • 기존에는 Object를 사용해 여러 타입을 처리했다면,
    제네릭을 쓰면 불필요한 형 변환을 줄이고 컴파일 타임에 오류를 방지할 수 있습니다.

💡 포인트 정리

  • 제네릭(Generic)은 클래스나 메소드 내부의 데이터 타입을 외부에서 지정할 수 있도록 해주는 문법입니다.
  • T, E, K, V 등은 제네릭에서 자주 쓰이는 타입 매개변수 이름입니다.
  • 사용 시 타입이 고정되므로 타입 안전성(Type Safety) 확보
  • 컴파일 시점에 타입 체크가 가능하여, 형 변환 오류를 줄일 수 있습니다.

📌 정리하자면, 제네릭은 클래스나 메소드를 다양한 타입에 대해 재사용 가능하게 만들어주는 자바의 핵심 기능입니다.
특정 타입에 종속되지 않으면서도, 타입 안정성을 확보하고 형변환 오류를 방지할 수 있어
실무에서 매우 자주 활용됩니다.