본문 바로가기
프로그래밍/Java

[Java] 제네릭이란 무엇인가, 왜 사용할까

by 시간많은백수 2023. 10. 17.
반응형

제네릭(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

 

반응형