으로 목록에 추가 할 수 없습니다. 컴파일러 오류가 발생합니다. 그러나 다음 작품 :제네릭은 무제한의 와일드 카드
List<? super Integer> someList = new ArrayList<Object>();
someList.add(11);
나는 당신이 억제 할 와일드 카드가 아닌 경계 와일드 카드를 포함하는 컬렉션에 개체를 추가 할 수 있음을 알고 있습니다.
그러나 위의 기능이 작동하지 않는 이유는 무엇입니까? 개체가 정수의 상위 유형이므로 개체를 추가 할 수없는 이유는 무엇입니까?
첫 번째 문장을 잘 모르겠습니다. 그래서, Objects *와 * Integers의리스트가 될 수 없습니다. 단 하나의 유형? 그러나 정수의 마지막 부분에 응답하여 정수를 목록에 추가 할 수 있습니다. – Joeblackdev
아 맞아. 내 잘못이야. Integer는 경계이므로 List가 될 수있는 모든 유형의 하위 유형이 될 수 있으므로 Integer를 추가 할 수 있습니다. 하지만 Integer의 수퍼 유형 임에도 불구하고 Number와 같은 다른 유형은 사용할 수 없습니다. 첫 번째 문장에 관해서는 생각해 보았습니다. 일반적인 와일드 카드는 목록에 여러 유형의 개체가 포함될 수 있음을 의미하지는 않습니다. 목록에 알 수없는 유형의 객체가 있음을 의미합니다. 예를 들어, 해당 유형 *이 Number 일 수 있기 때문에 목록에 객체를 추가하는 것은 불법입니다. –
이 의견에 따라 답변을 업데이트했습니다. –