Java
[제너릭]와일드카드 타입
Eddy Jo
2017. 2. 17. 22:21
?를 보통 와일드카드라고 부른다.
제너릭타입에서는 구체적인 타입을 명시하는 대신 와일드카드를 이용할 수 있다.
제너릭 타입<?> : Unbounded WildCards
제너릭 타입<? extends 상위클래스> : Upper Bounded WildCards - 상위타입이나 하위타입만
제너릭 타입<? super 하위클래스> : Lower Bounded WildCards - 하위타입이나 상위타입만
수강생을 예를 들어서 살펴보면
수강생들은 다음과 같은 상속관계를 가지고 있다.
코드를 통해 와이드카드 타입 매개변수를 살펴보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.Arrays; public class WildCardExample { public static void registerCourse(Course<?> course) { //모든 수강생이 들을수 있는 과정 System.out.println(course.getName() + "수강생: " + Arrays.toString(course.getStudents())); } public static void registerCourseStudents(Course<? extends Student> course) { //학생들만 들을 수 있는 과정(Student, HighStudent) System.out.println(course.getName() + "수강생: " + Arrays.toString(course.getStudents())); } public static void registerCourseWorker(Course<? super Worker> course) { //직장인과 일반인 들을 수 있는 과정(Worker, Person) System.out.println(course.getName() + "수강생: " + Arrays.toString(course.getStudents())); } } | cs |