[Java] Generic: 와일드카드
언어에서 와일드카드는 모든 것에 매칭될 수 있는 표현을 말한다. 이것도 비슷하다.
제너릭의 타입 매개변수로 ?를 전달하면, 뭐든 들어갈 수 있다는 뜻이 된다.


놀랍게도, 하나의 <?> 버전으로
근데 이거 혼자서는 잘 안쓰인다.
보통 제약을 건 상태로 매개변수에 사용된다.
하위타입 제약
? extends A로 제약을 걸면, A와 A의 서브타입만 들어갈 수 있다.
만약 이렇게 Top->Middle->Bottom 구조의 클래스들이 있고

Middle로 제약을 걸면, Middle과 그 서브타입 Bottom만 들어갈 수 있는 것이다.
Top를 사용한다면 에러가 난다.


상위타입 제약
하지만, 반대로 상위타입에 대한 제약이 필요할 수도 있다. 그럴땐 extends 대신 super를 사용한다.
Middle이 super로 걸려있다면, 들어갈 수 있는건 Middle과 그 상위타입 Top 뿐이다.

Bottom은 이렇게 에러가 난다.
그냥 Middle과 Top은

잘 컴파일된다.