[JAVA] 제네릭(Generic)이란?
[JAVA] 제네릭(Generic)이란?
Generic
- 클래스에서 사용할 타입을 클래스 외부에서 설정하는 것
- 제네릭 선언 하는 법
- 클래스<사용할 타입>으로 함
- CustomerStack 클래스는 <T>로 제네릭이 설정되어 있다.
- CustomerStack 내부에 있는 List타입의 customStack 객체도 <T>로 제네릭 설정이 되어 있음
- GenericEx_1 클래스에는 두 개의 객체 stringStack과 integerStack이 있음
- 두 객체의 타입은 CustomStack임
- CustomsStack 클래스를 사용하려면 제네릭이 설정되어 있으므로, 사용하는 쪽에서도 제네릭 타입을 명시해줘야함
- ex) <String>, <Integer> 등
- 마치, 회원가입 기능에서 '이름 입력'란에는 반드시 한글이나 영문만 들어가야 하는데, 사용자가 숫자를 넣게 되면 에러가 발생하는 것과 같음
<E>, <T>의 차이
- E, T로 선언되어 있는 제너릭 클래스에 어떤 타입 클래스가 들어가도 성공한다.
- E(element)는 요소라고 해석 할 수 있다.
- ex) ArrayList는 요소들(object)를 배열처럼 저장하기 때문에 E로 선언되어야 함
- 즉, List는 E(Element)가 어울린다.
- 결론은, 컬렉션 클래스(Collection, List, Set)와 같이 배열 기반으로 되어 있는 구조에는 E가 어울리고 그 외에는 T가 어울림
- 제네릭은 참조형 데이터 타입만 설정 가능
- 즉, int, char 이런것들은 설정 불가
- Integer는 래퍼 클래스(wrapper class)임
- 래퍼 클래스는 기본형 데이터 타입(primitive type)을 참조형 데이터 타입으로 바꿔주는 클래스
출처
댓글
댓글 쓰기