<aside> 💡
타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것이다.
즉, 작성한 클래스 또는 메소드의 코드가 특정 데이터 타입에 얽매이지 않게 해둔 것이다. </aside>
제네릭의 장점
와일드카드<?>
코드는 동일하지만 다른 타입들의 필드, 메소드, 클래스들이 필요해지면 각 타입마다 클래스를 다시 작성해야함
제네릭을 사용한다면 이런 번거로움이 줄어든다.
제네릭 클래스 정의
<aside> 💡
제네릭을 사용한 클래스
객체 생성 시 실제 타입 지정
다형성 적용 가능 </aside>
제한된 제네릭 클래스
<aside> 💡
제네릭 클래스 타입을 지정하는데에 어떠한 제한이 없다.
타입 매개변수 선언 시 상속 혹은 구현받는 클래스, 인터페이스만 지정할 수 있도록 제한 가능
extends 키워드 사용 </aside>
타입 매개변수
인자 | 의미 |
---|---|
<T> | Type |
<E> | Element |
<K, V> | Key, Value |
<R> | Result |
<?> | Wild Card 제한을 두지 않는 기호 |
기본타입 | 래퍼클래스 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |