혼동할 수 있는 와일드카드 표현
와일드카드는 설계가 아닌 사용을 위한 것
class Sample<? extends T> { // ! Error
}class Sample<T> {
public static <E> void run(List<? super E> l) {}
}
public class Main {
public static void main(String[] args) {
Sample<?> s2= new Sample<String>();
Sample<? extends Number> s1 = new Sample<Integer>();
Sample.run(new ArrayList<>()); // 타입을 지정하지 않는 경우 Object 로 추론된다.
}
}<T extends 타입> 과 <? extends U> 차이점
Last updated