✅ Generic(제네릭)이란?

졸용·2025년 4월 17일

✅ 제네릭이란?

🎯 이건 자바에서 유연하고 타입 안정성 있게 코드 짜는 핵심 도구

클래스나 메서드에서 사용할 데이터 타입을 외부에서 지정할 수 있게 해주는 문법이다.
➡️ 즉, 타입을 나중에 결정하게 하는 것!


🔧 간단한 예시!

List<String> list = new ArrayList<>();
list.add("Hello");      // O
list.add(123);          // ❌ 컴파일 에러! (타입 안정성)

<String> → 이게 제네릭.

list는 오직 문자열만 넣을 수 있다. 그래서 안전하고, 캐스팅 없이 쓸 수 있다.

String msg = list.get(0); // 바로 꺼내 쓸 수 있음!

👇 만약 제네릭 없이 짰다면?

List list = new ArrayList();
list.add("Hello");
list.add(123);

String s = (String) list.get(0); // 직접 형변환 필요 😓
  • 실수로 숫자 넣어도 컴파일 오류 없음

  • 꺼낼 때 항상 형변환 해야 함

  • 런타임 에러가 날 수 있음


🧠 제네릭을 쓰는 이유

이유설명
✅ 타입 안정성잘못된 타입 넣는 걸 컴파일러가 막아줌
✅ 캐스팅 필요 없음꺼낼 때 형변환 없이 바로 사용 가능
✅ 코드 재사용성다양한 타입에도 재사용 가능

✨ 커스텀 클래스에서도 제네릭 가능

class Box<T> {
    private T value;
    public void set(T value) { this.value = value; }
    public T get() { return value; }
}

사용할 때:

Box<String> stringBox = new Box<>();
stringBox.set("Hi!");
System.out.println(stringBox.get()); // Hi!

Box<Integer> intBox = new Box<>();
intBox.set(123);
System.out.println(intBox.get()); // 123

<T>는 타입 매개변수! String, Integer 등으로 나중에 지정해주는 것이다.


🔚 요약

용어의미
List<T>T라는 타입을 나중에 지정할 수 있는 리스트
T, E, K, V흔히 쓰는 제네릭 타입 이름 (Type, Element, Key, Value 등)
<?>와일드카드, 어떤 타입이든 허용하겠다는 뜻
profile
꾸준한 공부만이 답이다

0개의 댓글