제네릭

☕ 자바 제네릭(Generics) 개념 & 문법 정복하기

클래스와 인터페이스 선언에 타입 매개변수가 쓰이면 이를 제네릭 클래스 / 인터페이스라 한다.

제네릭 클래스/인터페이스를 통틀어 제네릭 타입이라 한다.

클래스나 메소드에서 사용될 데이터 타입을 필요에 의해 지정할 수 있도록 하는 일반 타입이다.

→ 컴파일 단계에서 타입이 잘못 지정될 위험 방지, 타입변환/타입검사 생략 가능

ArrayList<String> list = new ArrayList<String>();
List<T> l = new ArrayList<>();
//<> 다이아몬드 연산자 부분이 제네릭

제네릭 타입 매개 변수

타입 매개 변수로 사용하는 문자는 관례적으로 하나의 대문자를 사용한다.

T Type
E Element (List)
K Key (Map<K,V>)
V Value
N Number
S,U,V 2,3,4번째에 선언된 타입

제네릭에서 할당 받을 수 있는 타입은 Reference 타입 뿐이다.

→ 기본형은 Wrapper 클래스 사용해야 함

//2. 할당된 타입으로 모두 변환되어 클래스 타입이 지정됨
	class Info<T>{
		List<T> infos = new ArrayList<>();
		
		public void add(T info) {
			infos.add(info);
		}
	}
	
	public static void main(String[] args) {
	//1. 제네릭 타입 매개변수에 String 타입 할당
		Info<String> infos = new Info<>(); //1.7 이후부터 생성자에서는 타입을 지정해줄 필요 없음 (생략 가능)
		Info<Integer> intInfos = new Info<>();
		
		infos.add("add info");
		intInfos.add(1);
	}