제네릭(generic)
제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법
데이터 타입으로 참조형 데이터 타입만 가능
기본 데이터 타입을 사용하려면 Wrapper 클래스 이용
복수의 제네릭 사용 가능
다양한 제네릭의 표현
extends 키워드를 사용하면 타입 변수에 특정 타입만을 사용하도록 제한
클래스의 타입 변수에 제한을 걸어 놓으면 클래스 내부에서 사용된 모든 타입 변수에 제한
class AnimalList<T extends LandAnimal> { ... }
클래스가 아닌 인터페이스를 구현할 경우에도 implements 키워드가 아닌 extends 키워드를 사용
interface WarmBlood { ... }
class AnimalList<T extends WarmBlood> { ... } // implements 키워드를 사용해서는 안됨.
클래스와 인터페이스를 동시에 상속받고 구현해야 한다면 엠퍼센트(&) 기호를 사용
class AnimalList<T extends LandAnimal & WarmBlood> { ... }