와일드 카드 제네릭이란?
레퍼런스 타입의 제네릭을 좀더 넓게! 제한 하는것.
제한을 런타임 시점에 강제하는것.
이 두가지가 키포인트라 생각된다.
"레퍼런스 타입의 제네릭을 좀더 넓게! 제한하는것" 의미
일반적으로 List<Number> 이 되면 Number타입에 정확히 맞춰야한다.(자바의 강력한 타입 체킹)
그러나 제네릭 와일드 카드를 사용하게 되면 List<? extends Number> 처럼 쓸수 있고
이는 String 을 상속받는 하위 클래스들을 모두~유연~하게 사용할수 있다는 장점을 갖게 된다.!
"제한을 런타임 시점에 강제하는것" 의미
일반 제네릭은 <T extends Number> 처럼 제한을 무엇으로 할지를 컴파일 타임에 강제한다
그러나, 와일드카드 제네릭은 <? extends T> 처럼 제한을 런타임 시점에 강제한다.
결론
제네릭의 제한을 넓게, 런타임시점에 입맛에 맞게 하고 싶을때 쓰면 좋을듯 하다.
그런데 제네릭이란 본래 타입제한을 통한 에러를 걸러내는 역할도 하느것인데,, 너무 넓게 제한을 잡아버리면
그 본래 기능이 퇴색? 될수있기때문에 상황에 따라 잘써야겠다..!