본문 바로가기
🗂️CS & Other/자료구조 (data structure)

[자료구조] 와일드 카드(Wildcard)

by inbeom 2023. 8. 28.
728x90

💡 Wildcard란??

제네릭 클래스의 객체를 메소드의 매개변수로 받을 때, 그 객체의 타입 변수를 제한하는 것을 말한다.

즉 ‘제한된 제네릭 클래스’라고 할 수 있다.

 

활용 예시

  • 메서드에서 제네릭 클래스의 객체를 매개변수로 받는 경우
**public void myMethod**(ArrayList list) { . . . }

이 메소드는 ArrayList를 매개변수로 받고 있지만, ArrayList가 담고 있는 '타입 변수'는 Number를 상속받은 객체들이어야 정상적으로 작동 하도록 설계되었다.  하지만 ArrayList가 어떤 타입 변수를 가지고 있던지 간에 모두 받아 들일 가능성이 있다.

이런 경우에 와일드 카드를 이용하여서 ArrayList의 '타입 변수'를 지정 할 수 있다.

**public void myMethod**(ArrayList<? extends Number> list) { . . . }

"메소드가 받아들일 매개변수 ArrayList의 타입 변수는 Number클래스와 Number클래스를 상속받은 클래스들의 객체들만 받는다!"라고 명시한 것이다.

  • <? extends T> 와일드 카드의 상한 제한(upper bound) - T와 그 자손들을 구현한 객체들만 매개변수로 가능
  • <? super T> 와일드 카드의 하한 제한(lower bound) -T와 그 조상들을 구현한 객체들만 매개변수로 가능
  • <?> 제한 없음
728x90