: 결정되지 않은 타입을 파라미터로 처리하고
실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능
내용물의 타입을 어떤 타입으로 제공할지 미리 알려주는 것으로
List, Map 과 같은 컬렉션 프레임워크를 예시로 볼 수 있다.
: 결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스
제네릭 타입은 <> 부호사이에 타입 파라미터가 위치한다.
외부에서 사용할때 파라미터에 구체적인 타입을 지정해야하는데
지정하지 않는다면 Object 타입이 사용된다.
: 제네릭 타입을 매개값 또는 리턴 타입으로 사용할 때 파라미터로 ?(와일드카드)를 사용할 수 있다.
리턴타입 메소드명(List<? extends Number> 변수) {
}
이 경우 Number 클래스와 Number 클래스의 하위 클래스를 요소로 가지는 리스트를 나타낸다.
리턴타입 메소드명(List<? super Integer> 변수) {
}
이 경우 Integer 클래스와 Integer클래스의 상위 클래스를 요소로 가지는 리스트를 나타낸다.