티스토리 뷰
설명
자바 제네릭 표현법 중 하나이다. (Unbounded WildCard는 비한정적 와일드카드 타입이라 불린다)
? 는 어떤 Reference 타입이든 올 수 있다고 생각하면 편하다.
단, 기본 타입 중엔 Object를 상속받은 wrapper class type만 가능하며, primitive type은 불가능하다.
제네릭 타입을 받을 때 상한선 또는 하한선을 제한하기 위해 사용된다.
정확한 의미
1. <? extends Object>와 동일 (Object 타입을 포함 및 Object 하위 타입을 받을 수 있음) - exntends는 상한선을 의미
2. Java 최상위 객체인 Object를 하위로 하는 클래스를 전부 받겠다는 의미 (모든 선언된 객체를 의미)
예시:
public static void printAll(List<?> list) { // List<?> 사용
for (Object item : list)
System.out.println(item + " ");
}
public static void main(String args[]) {
List<Integer> integerList = Arrays.asList(1, 2, 3);
printAll(integerList);
List<Object> doubleList = Arrays.asList(5.1, 5.2, 5.3);
printAll(doubleList);
}
참고 그림:
댓글