Java

Java / 제네릭(Generic) 1

Dear-J 2025. 3. 2. 19:41

타입 안전성 문제

다형성을 활용한 덕분에 코드의 중복 제거, 기존 코드 재사용 가능

 

하지만 입력할 때 실수로 원하지 않는 타입이 들어갈 수 있음

반환 시점에도 항상 위험한 다운 캐스팅 시도해야 함

>> 타입 안전성 떨어짐

 

제네릭 적용

<>(다이아몬드)를 사용한 클래스

타입을 미리 결정하지 않음

 

생성하는 시점에 <> 사이에 원하는 타입 지정

 

타입 추론

자바 컴파일러가 타입을 추론할 수 있는 상황

>> 읽을 수 있는 타입 정보가 주변에 있어야 추론 가능

 

용어 정리

제네릭(Generic) 단어 : 일반적인, 범용적인이라는 영어 단어 뜻

>> 특정 타입에 속한 것이 아님

 

제네릭 타입(Generic Type) : 클래스나 인터페이스를 정의할 때 타입 매개변수를 사용하는 것

>> 제네릭 클래스, 제네릭 인터페이스를 모두 합쳐 제네릭 타입

>> class GenericBox<T> { private T t;} 에서 GenericBox<T>를 제네릭 타입이라 함

 

타입 매개변수(Type Parameter) : 제네릭 타입이나 메서드에서 사용되는 변수로 실제 타입으로 대체됨

>> GenericBox<T> 에서 T를 타입 매개변수라 함

 

타입 인자(Type Argument) : 제네릭 타입을 사용할 때 제공되는 실제 타입

>> GenericBox<Integer> 에서 Integer을 타입 인자라 함

>> 타입 인자로 기본형 사용 불가, 대신 래퍼 클래스 사용

 

로 타입(raw type)

<>을 지정하지 않음

 

내부의 타입 매개변수가 Object로 사용됨

>> 구시대의 산물, 사용하지 않는 것을 권장

 

'Java' 카테고리의 다른 글

Java / 컬렉션 프레임워크 - ArrayList  (0) 2025.03.04
Java / 제네릭(Generic) 2  (0) 2025.03.04
Java / 예외 처리 - 실습  (0) 2025.03.02
Java / 예외 처리 - 이론  (0) 2025.02.28
Java / 지역 클래스, 익명 클래스  (0) 2025.02.27