타입인자 설명
<T> Type
<E> Element
<K> Key
<N> Number
<V> Value
<R> Result

사용하는 이유

  1. 컴파일시 강한 타입 체크 → 잘못된 타입 들어갈 가능성 제거
  2. 타입 명시 → 불필요한 타입 변환 감소성능 향상
ArrayList list = new ArrayList(); //제네릭을 사용하지 않을경우
list.add("test"); // "test" 를 Object 타입으로 인식
String temp = (String) list.get(0); //타입변환이 필요함
        
ArrayList<String> list2 = new ArrayList(); //제네릭을 사용할 경우
list2.add("test"); // "test" 를 String 타입으로 인식
temp = list2.get(0); //타입변환이 필요없음

제네릭 타입

타입을 파라미터로 가지는 클래스와 인터페이스

클래스 또는 인터페이스 뒤에 <> 부호가 붙고 사이에 타입 파라미터가 위치

public class Generic<T> { ... }
public interface Generic<T> { ... }

타입 파라미터

<> 안에 들어가는 것 보통 대문자 한 글자로 표현함

타입인자 설명
<T> Type
<E> Element
<K> Key
<N> Number
<V> Value
<R> Result

멀티 타입 파라미터

<> 안에 2개 이상의 타입 파라미터 들어가는 것

public class MapGeneric<K, V> { ... }