와일드 카드 제네릭이란?

레퍼런스 타입의 제네릭을 좀더 넓게! 제한 하는것.

제한을 런타임 시점에 강제하는것.

 

이 두가지가 키포인트라 생각된다.

 

 

 

"레퍼런스 타입의 제네릭을 좀더 넓게! 제한하는것" 의미

일반적으로 List<Number> 이 되면 Number타입에 정확히 맞춰야한다.(자바의 강력한 타입 체킹)

그러나 제네릭 와일드 카드를 사용하게 되면 List<? extends Number> 처럼 쓸수 있고

이는 String 을 상속받는 하위 클래스들을 모두~유연~하게 사용할수 있다는 장점을 갖게 된다.!

 

"제한을 런타임 시점에 강제하는것" 의미

 

일반 제네릭은 <T extends Number> 처럼 제한을 무엇으로 할지를 컴파일 타임에 강제한다

그러나, 와일드카드 제네릭은 <? extends T> 처럼  제한을 런타임 시점에 강제한다.

 

 

결론

제네릭의 제한을 넓게, 런타임시점에 입맛에 맞게 하고 싶을때 쓰면 좋을듯 하다.

그런데 제네릭이란 본래 타입제한을 통한 에러를 걸러내는 역할도 하느것인데,, 너무 넓게 제한을 잡아버리면

그 본래 기능이 퇴색? 될수있기때문에 상황에 따라 잘써야겠다..!  

 

 

+ Recent posts