[JAVA] 제네릭(Generic) 정리
2020. 8. 3. 14:59ㆍProgramming Language/JAVA
반응형
■ 제네릭(Generic)
다양한 타입의 객체에 재사용을 높일 수 있는 기법으로 클래스에서 사용할 타입을 외부에서 설정하는 것
■ 제네릭 타입
제네릭 타입은 원하는 데로 지정해도 되지만, 암묵적인 약속처럼 공통적으로 자주 사용하는 타입인자
타입 인자 | 의미 |
E | Element |
K | Key |
N | Number |
T | Type |
V | Value |
R | Result |
※ 특징 3가지
1. 객체 생성이 가능한 타입에 대해서만 제네릭 사용이 가능하다.
18행 : Wrapper 클래스인 Interger 클래스를 제네릭 타입으로 지정하면 에러가 발생하지 않는다.
21행 : 기본 자료형인 int형으로 제네릭 타입으로 지정하면 에러가 발생한다.
SOURCE CODE
2. 객체의 타입을 컴파일 시점에서 체크하기 때문에 타입 안정성을 높이고, 형변환의 번거러움을 줄인다.
1) 비교를 위해 두 클래스 준비
- 제네릭 클래스
- Object 클래스형 인스턴스 변수를 갖는 클래스
2) 비교 작업
35행 : 제네릭 타입이 String 형이기 때문에 Integer형 데이터를 입력하면 에러가 발생한다.
38행 : 제네릭의 경우 강제 형변환을 하지 않아도 된다.
43행 : set 메서드를 통해 obj는 String 형으로 형태가 정해진다.
45행 : get 메서드를 통해 obj를 반환하여 String 형태로 변환할 경우 강제 형변환(다운캐스팅)이 필요하다.
SOURCE CODE
3. 와일드 카드<?> 제한
표현 | 설명 |
<?> | 타입 제한이 없다. <? extends Object>와 동일 기능 |
<? extends T> | T 와 T를 상속받는 하위 클래스만 사용 가능 |
<? super T> | T 와 T의 부모 클래스만 사용 가능 |
21행 : 파라미터로 제네릭 타입이 Object 이거나 Object의 자식 클래스는 모두 지정 가능
22행 : 파라미터로 제네릭 타입이 Pet 형 이거나 Pet의 자식 클래스는 모두 지정 가능
23행 : 파라미터로 제네릭 타입이 Dog 형 이거나 Dog의 부모 클래스는 지정 가능
※ 상세설명은 main 메서드의 내용 참고
SOURCE CODE
반응형
'Programming Language > JAVA' 카테고리의 다른 글
[Eclipse] 이클립스(Eclipse) 한글 깨짐 현상 해결 (0) | 2020.08.04 |
---|---|
[JAVA] 컬렉션(Collection API) 정리 (Set 계열/List 계열) (2) | 2020.08.03 |
[JAVA] 오버로딩(Overloading) 정리 (0) | 2020.08.01 |
[JAVA] 오버라이딩(Overriding) 정리 (0) | 2020.08.01 |
[JAVA] 인터페이스(interface) 정리 (0) | 2020.07.31 |