자바 제네릭스에서 와일드 카드(wildcard)는 불특정한 타입을 나타내기 위한 기호입니다. 주로 제네릭스에서 유연성을 확보하고자 할 때 사용됩니다. 와일드 카드는 크게 3가지 형태로 나눌 수 있습니다: ?, ? extends T, ? super T.
1. ? (Unbounded Wildcard)
어떤 타입이든 허용합니다.
public static void processElements(List<?> elements) {
for (Object element : elements) {
System.out.println(element);
}
}
위의 메서드는 어떤 타입의 리스트도 받을 수 있습니다.
2. ? extends T (Upper Bounded Wildcard)
특정 타입 T나 T의 하위 타입만을 허용합니다.
public static <T> void copyElements(List<? extends T> source, List<T> destination) {
for (T element : source) {
destination.add(element);
}
}
위의 메서드는 source 리스트의 요소를 destination 리스트에 복사하는데, source 리스트의 타입은 T나 T의 하위 타입이어야 합니다.
3. ? super T (Lower Bounded Wildcard)
특정 타입 T나 T의 상위 타입만을 허용합니다.
public static <T> void addElement(List<? super T> list, T element) {
list.add(element);
}
위의 메서드는 list에 요소를 추가하는데, list의 타입은 T나 T의 상위 타입이어야 합니다.
와일드 카드를 사용함으로써 메서드나 클래스를 더 유연하게 만들 수 있습니다. 그러나 와일드 카드를 사용할 때 주의해야 할 점은 메서드 내에서 해당 타입에 대한 안전한 작업을 수행하기가 어려워질 수 있다는 점입니다. 와일드 카드를 사용할 때는 필요에 따라서 상황에 맞게 적절한 방법을 선택해야 합니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 제네릭 타입의 형변환 (0) | 2023.11.19 |
---|---|
자바 제네릭 메서드 (0) | 2023.11.19 |
자바 제네릭 제한된 클래스 (0) | 2023.11.19 |
자바 제네릭 클래스의 객체 생성과 사용 (0) | 2023.11.19 |
자바 제네릭 클래스의 선언 (0) | 2023.11.19 |