? 와일드 카드 - ?와 제네릭 변수 선언, 하위 클래스를 제한하는 용도의 와일드 카드

CODEDRAGON Development/Java

반응형

   

   

?와 제네릭 변수 선언

<? extends Info>

<? extends Info>가 의미하는 바는 "Info을 상속하는 모든 클래스"를 지칭합니다

   

Person<? extends Info> person1 = new Person<StudentInfo>();

   

Person<? extends Info> person2 = new Person<EmplyeeInfo>();

  

Person<StudentInfo> 인스턴스의 참조 값도,

Person<EmplyeeInfo> 인스턴스의 참조 값도

인자로 전달받을 수 있는 매개변수의 선언에는 와일드카드 문자 ?가 사용됩니다

   

Person<?> person;

자료형에 상관없이 Person<T>의 인스턴스를 참조에 사용되는 참조변수,

아래의 선언과 동일한 코드.

   

Person<? extends Object> person;

   

   

   

하위 클래스를 제한하는 용도의 와일드 카드

Person<? extends EmployeeInfo> person1;

  • "~ 상속하는 클래스라면 무엇이든지"
  • EmployeeInfo를 상속하는 클래스의 인스턴스라면 무엇이든지 참조 가능한 참조변수 선언

   

Person<? super EmployeeInfo> person2;

  • "~ 상속하는 클래스라면 무엇이든지"
  • EmployeeInfo이 상속하는 클래스의 인스턴스라면 무엇이든지 참조 가능한 참조변수 선언