?를 보통 와일드카드라고 부른다.


제너릭타입에서는 구체적인 타입을 명시하는 대신 와일드카드를 이용할 수 있다.


제너릭 타입<?> : 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

+ Recent posts