반응형
제네릭(Generic)은 프로그래밍 언어에서 데이터 타입을 일반화하여 코드의 재사용성과 안정성을 높이기 위한 프로그래밍 기법입니다. 제네릭을 사용하면 컬렉션, 메소드, 클래스 등에서 사용하는 데이터 타입을 런타임이 아닌 컴파일 타임에 안전하게 지정할 수 있습니다. 이는 컴파일러가 코드 유효성을 검사하고 타입 불일치에 의한 에러를 사전에 방지할 수 있도록 해줍니다.
List<String> list = new ArrayList<>();
HashSet<Integer> hs = new HashSet<>();
등과 같이 <>안에 타입이 명시되어있는 형태를 제네릭이라고 한다.
제네릭을 사용하는 이유
💡타입 안정성(Type Safety)
- 제네릭을 사용하면 컴파일러가 타입 체크를 수행할 수 있어 런타임 시점의 ClassCastException과 같은 타입 관련 오류를 방지할 수 있습니다.
💡코드 재사용성과 일반화
- 제네릭 코드는 특정 타입에 의존하지 않으므로 다양한 타입에 대해 재사용이 가능합니다. 일반화된 알고리즘을 작성하여 여러 데이터 타입에서 사용할 수 있습니다.
💡타입 캐스팅 감소
- 제네릭을 사용하면 명시적인 타입 캐스팅을 줄일 수 있습니다. 이로써 코드가 더 간결해지고 가독성이 높아집니다.
💡컴파일 타임 타입 체크
- 제네릭을 사용하면 컴파일 타임에 코드의 타입 불일치를 감지할 수 있습니다. 따라서 런타임 시 예기치 않은 오류를 방지할 수 있습니다.
💡컬렉션 프레임워크 활용
- Java의 컬렉션 프레임워크에서는 제네릭을 사용하여 다양한 데이터 타입을 저장할 수 있습니다. 이로써 컬렉션을 사용할 때 타입 변환의 번거로움을 줄일 수 있습니다.
예시)
제네릭을 사용하지 않은 경우:
1
2
3
4
|
List list = new ArrayList();
list.add("문자열");
String str = (String) list.get(0); // 타입 캐스팅이 필요
|
cs |
제네릭을 사용한 경우:
1
2
3
4
|
List<String> list = new ArrayList<>();
list.add("문자열");
String str = list.get(0); // 타입 캐스팅이 필요 없음
|
cs |
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[Java] Thread를 써야하는 이유 (0) | 2023.10.20 |
---|---|
[Java] System.out.println 메소드는 현업에서 쓰지말라는 이유 (0) | 2023.10.18 |
[Java] Java의 GC(Garbage Collector)는 어떻게 동작할까 (1) | 2023.10.16 |
[Java] 리플렉션(Reflection)과 자바 다이나믹 프록시(Java Dynamic Proxy) (0) | 2023.10.15 |
[Java] new String()과 ""(리터럴 방식)의 차이 (0) | 2023.10.14 |