제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다.
List<String> list = new ArrayList<>();
<>가 있으면 제네릭이다.
<> 안에 String이 들어가 있기 때문에 앞으로 list라는 변수에는 String타입만 저장이 가능하다.
객체의 타입을 지정해주는 것이다.
제네릭의 장점
- 재사용성 증가
- 여러 타입의 파라미터를 삽입해 객체를 생성할 수 있어 코드가 간결해지고 재사용성이 높아진다.
- 동일한 기능을 하는 메서드에서 파라미터 타입만 다르게 사용하는 경우 유용하다.
- 컴파일 시 타입 에러를 발견 가능
- 기존에 JDK 1.5 이전에는 인수, 반환값으로 Object타입을 사용해 사용할 때 타입 변환을 새로 해주어야 했다.
- 현재는 그 과정없이 컴파일 단계에서 타입 오류를 잡아낼 수 있다.
- 컴파일러가 타입 변환 수행
- 컴파일 단계에서 컴파일러가 타입 캐스팅을 수행해준다.
타입 파라미터
타입 파라미터는 타입이 정해지지 않은 파라미터이다.
타입 분류 | 타입 인자 |
참조 | <T> |
요소 | <E> |
키 | <K> |
값 | <V> |
타입 파라미터를 나타낼 때는 일반적으로 대문자 알파벳(A~Z)을 사용하며, 꼭 T일 필요는 없다.
타입 한정
T extends Number
->하위 제한
Number라는 객체를 상속받는 객체만 T에 들어갈 수 있다.
T super Number
-> 상위 제한
Number라는 객체의 부모 객체만 T에 들어갈 수 있다.
와일드 카드 <?>
제네릭 간의 형변환을 성립되게 하기 위해서는 와일드 카드 문법을 사용해야 한다.
타입 지정을 아예 안하는, ? 안에는 어떤 타입도 들어갈 수 있다.
마찬가지로 타입 한정을 사용한다. (상위 제한, 하위 제한)
'Language > Java' 카테고리의 다른 글
Java 기본 - 오버라이딩 오버로딩 (0) | 2023.06.29 |
---|---|
Java 기본 - final 키워드 (0) | 2023.06.29 |
Java 기본 - Annotation (0) | 2023.06.26 |
Java 기본 - Collection (0) | 2023.06.23 |
Java 기본 - JVM이란 무엇일까? (0) | 2023.06.22 |