Generics
- 다양한 타입의 객체를 다루는 메서드, 컬렉션 클래스에서 컴파일 시에 타입 체크
- 미리 사용할 타입을 명시하여 형 변환을 하지 않아도 되게 함
- 객체의 타입에 대한 안전성 향상 및 형 변환의 번거로움 감소
표현
- 클래스 또는 인터페이스 선언 시 <>에 타입 파라미터 표시
- ex) public class Class_name {}
- 객체 생성
- 변수 쪽과 생성 쪽의 타입은 반드시!! 같아야함
Class_name<.String> generic = new Class_name<.String>();
type parameter의 제한
- 필요에 따라 구체적인 타입 제한 필요
- 계산기 프로그램 구현 시 Number 이하의 타입(Byte, Short, Integer...)로만 제한
- type parameter 선언 뒤 extends와 함께 상위 타입 명시
- 인터페이스로 제한할 경우에도 extends 사용
- 클래스와 함께 인터페이스 제약 조건을 이용할 경우 &로 연결
generic type에서 구체적인 타입 대신 사용
- Generic type <?> : 타입에 제한이 없음
- Generic type<? extends T> : T 또는 T를 상속받은 타입들만 사용 가능
- Generic type<? super T> : T 또는 T의 조상 타입만 사용 가능