반응형
✅ 제네릭?
"자료형을 나중에 정하는 틀(도구)"
정확히 어떤 자료형(문자, 숫자 등)이 들어올지 미리 고정하지 않고,
쓸 때 정해서 쓰는 문법
📦 진짜 쉬운 예시
💡 "박스"를 떠올려봄!
- 박스를 만들어 놓고
- 어떤 걸 넣을지는 나중에 결정하는 것
🟫 일반 박스 (제너릭 X)
- 그냥 박스 하나 있음
- 사과 넣어도 되고, 책 넣어도 되고, 컵 넣어도 됨
- 그런데 꺼낼 때 뭐가 들었는지 모르면? ❗ 위험함
✅ 제너릭 박스 (제너릭 O)
- “이 박스엔 오직 사과만 넣을 수 있음” 이라고 정해놓고 쓰는 것 🍎
- 또는 “이 박스는 숫자만!”
- 그러면 꺼낼 때 무슨 타입인지 확실하니까
👉 더 안전하고 실수도 없음!
🧠 왜 쓰냐?
이유설명
✅ 실수 방지 | 숫자에 글자 넣는 실수 방지 |
✅ 정리정돈 | 자료형 섞이지 않게 관리 |
✅ 재활용 | 같은 구조로 여러 자료형 처리 가능 |
🎯 현실 비유 하나 더!
📬 서랍 생각해봐.
- 라벨 없는 서랍 = 아무거나 들어갈 수 있음 = 헷갈림
- “속옷 서랍” “양말 서랍” = 타입이 정해져 있음 = 제너릭 느낌!
→ 절대 양말 서랍에 속옷 안 들어감 😆
✨ 한 줄 정리
제너릭은 "이 박스에는 어떤 자료만 들어가게 하자!"라고
타입을 제한하고, 더 안전하게 만드는 문법.
✅ 제너릭을 실제로 쓰는 경우는?
"같은 구조인데 자료형만 다를 때"
👉 제너릭을 쓰면 코드 재사용 + 실수 방지가 가능!
💡 예시 1. 자료를 여러 개 저장하는 리스트 만들 때
📦 상황:
- 이름 목록은 문자열(String)으로 저장
- 가격 목록은 숫자(Integer)로 저장
💥 제너릭 없이 쓰면?
- 하나의 리스트에 여러 자료형이 섞임
- 나중에 꺼낼 때 자료형 헷갈려서 오류 생김
✅ 제너릭 쓰면?
- List<String> → 오직 문자열만
- List<Integer> → 오직 숫자만
💡 예시 2. 박스 같은 자료 구조 만들 때
🛍 상황:
- 어떤 박스 클래스 만들어놓고
- 그 안에 사과, 바나나, 숫자 등 넣고 싶어
제너릭 없이?
- 박스 만들 때마다 사과용, 바나나용, 숫자용 따로 만들어야 함
→ 비효율적
제너릭 쓰면?
- Box<T> 하나만 만들어두면
→ Box<String>, Box<Integer>로 다양하게 재사용 가능!
💡 예시 3. 정렬할 때
- Comparator<T>도 제너릭이야!
- 어떤 객체든 비교 기준을 만들어줄 수 있음
예:
- Comparator<Member> → 회원 비교
- Comparator<Student> → 학생 비교
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
함수형 프로그래밍 vs 객체지향 프로그래밍 (0) | 2025.04.22 |
---|---|
자바스크립트 ES6 - 7가지 사용법 (모던 프로그래밍) (0) | 2025.04.22 |
Comparable vs Comparator 차이 (0) | 2025.04.22 |
팩토리얼 (1) | 2025.04.22 |
컬렉션 List & Set 차이점 (0) | 2025.04.22 |