[Java] Generic: 클래스의 타입 매개변수 제약

기본적으로 제너릭의 타입 매개변수는 모든 참조 타입을 받을 수 있다.

하지만... 보다 견고한 인터페이스를 구성하기 위해서는 타입이 특정 인터페이스에 종속되도록 할 필요가 있다.

그럴 때 사용하는 것이 extends 키워드다.
타입 매개변수에 와 같이 적으면, 이 타입 T는 S를 상속받거나, S타입이어야만 한다는 것이다.

예를 들기 위해 3가지의 클래스를 구성했다.
Top -> Middle -> Bottom 순으로 상속된다. image

image

그리고 제약을 건 타입 매개변수의 제너릭 클래스다. image

image Middle의 서브타입만 들어갈 수 있다는 뜻이다.

그럼 Middle이나, Middle의 서브타입인 Bottom은 잘 들어간다. image

image

하지만 Top이나, 기타 관련없는 타입들은 들어가지 못한다. image