Java 제네릭: "이 바구니에는 사과를 담을 수 없습니다"1. 들어가며자바 제네릭을 공부하다 보면 가장 당혹스러운 순간이 찾아옵니다. "분명히 과일 바구니라고 선언했는데, 왜 사과를 못 담게 하지?"이 글은 ? extends T라는 외계어 같은 문법 뒤에 숨겨진, 자바 컴파일러의 "안전 과민증"에 대한 이야기입니다.2. 환경IDE: VS CodeJDK: Java 17Phase 1. 상식의 배신 (왜 사과 바구니는 과일 바구니가 아닐까?)현실 세계에서 "사과는 과일이다"는 참입니다. 그래서 친구가 "과일 좀 담아올 바구니 줘"라고 했을 때, 집에 있던 "사과 바구니"를 줘도 아무 문제가 없습니다. 어쨌든 과일을 담을 수 있으니까요.하지만 자바는 아주 고지식합니다. 자바에게 사과 바구니(List)와 과일 ..