JAVA · 람다/메서드
와일드카드 심화 (PECS)
? extends T와 ? super T의 차이, PECS 원칙을 마스터합니다.
람다/메서드고급wildcardPECSextendssuper
핵심 설명
? extends T와 ? super T의 차이, PECS 원칙을 마스터합니다.
Java code
import java.util.*;
public class WildcardPECS {
// Producer Extends — 데이터를 꺼내기만
static double sum(List<? extends Number> list) {
double total = 0;
for (Number n : list) {
total += n.doubleValue();
}
return total;
}
// Consumer Super — 데이터를 넣기만
static void fill(List<? super Integer> list, int count) {
for (int i = 0; i < count; i++) {
list.add(i);
}
}
// 복합: 소스에서 읽고 대상에 쓰기
static <T> void copy(List<? extends T> src,
List<? super T> dest) {
for (T item : src) {
dest.add(item);
}
}
public static void main(String[] args) {
List<Integer> ints = List.of(1, 2, 3);
List<Double> doubles = List.of(1.1, 2.2);
System.out.println(sum(ints)); // 6.0
System.out.println(sum(doubles)); // 3.3
List<Number> nums = new ArrayList<>();
fill(nums, 5);
copy(ints, nums);
System.out.println(nums);
}
}학습 팁
PECS: Producer-Extends, Consumer-Super. 데이터를 읽으면 extends, 쓰면 super를 사용합니다.
주의할 점
List에 원소를 추가할 수 없습니다. 컴파일러가 정확한 타입을 모르기 때문입니다.
자주 묻는 질문
와일드카드 심화 (PECS)란 무엇인가요?
? extends T 와 ? super T 의 차이, PECS 원칙을 마스터합니다.
와일드카드 심화 (PECS) 학습 시 주의할 점은 무엇인가요?
List 에 원소를 추가할 수 없습니다. 컴파일러가 정확한 타입을 모르기 때문입니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.