?를 보통 와일드카드라고 부른다.
제너릭타입에서는 구체적인 타입을 명시하는 대신 와일드카드를 이용할 수 있다.
제너릭 타입<?> : 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 |
'Java' 카테고리의 다른 글
[람다식] 람다식 기본 (0) | 2017.02.24 |
---|---|
[제너릭]제너릭 타입의 상속 (0) | 2017.02.17 |
[제너릭]제너릭 메소드 (0) | 2017.02.16 |
[제너릭] 제너릭과 비제너릭 비교 (0) | 2017.02.15 |
Thread 상속으로 thread 생성 (0) | 2017.01.27 |