가끔 오픈소스 코드 보다보면 내부에 아래 같은 표현이 있어서 뭔가 싶었는데 이참에 정리해봤다. : Unbounded Wildcard : 어떤 타입이든 허용 (제한 없음) : Upper Bounded Wildcard : T 또는 T의 하위 타입 (상한 제한) : Lower Bounded Wildcard : T 또는 T의 상위 타입 (하한 제한) 기억하기 어려우면 PECS로 기억하면 된다. Producer extends / Consumer super 생산자는 extends를 쓰고, Consumer는 super를 쓴다 정도로, 아래 예시 보면 좀 이해가 도움이 될 듯 static void copy(List dest, List src) { for (T e : src) { // src는 값을..