>Java >java지도 시간 >와일드카드 일반 유형(목록)을 사용하여 Java 컬렉션에 값을 추가할 수 없는 이유

와일드카드 일반 유형(목록)을 사용하여 Java 컬렉션에 값을 추가할 수 없는 이유

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-02 19:34:14284검색

Why Can't I Add Values to a Java Collection with a Wildcard Generic Type (List

와일드카드 일반 유형을 사용하는 Java 컬렉션: 값 추가

와일드카드 일반 유형으로 선언된 Java 컬렉션에 값을 추가하려고 하면, List인 경우 컴파일러에서 오류가 발생할 수 있습니다. 이는 추가되는 값의 유형(예: 상위 p)이 컬렉션의 예상 유형과 일치하지 않을 때 발생합니다.

이러한 제한은 안전상의 이유로 존재합니다. 다음 예를 고려하십시오.

List<Child> childList = new ArrayList<Child>();
childList.add(new Child());

List<? extends Parent> parentList = childList;
parentList.set(0, new Parent());

Child child = childList.get(0); // Unexpected type!

여기서 Child 객체 목록을 정의한 다음 여기에서 와일드카드 일반 목록 parentList를 생성합니다. parentList에서 항목을 안전하게 검색하여 Parent로 변환할 수 있습니다. 그러나 상위 개체를 목록에 할당하려는 시도는 목록 요소의 실제 유형과 호환되지 않을 수 있으므로 허용되지 않습니다.

이 제한은 잠재적인 런타임 유형 오류를 방지하고 개체의 무결성을 보장합니다. 컬렉션이 유지됩니다. 컬렉션의 의도된 동작을 손상시킬 수 있는 수정을 방지하면서 알 수 없는 컬렉션에서 읽기 위해 와일드카드 유형을 사용할 수 있습니다.

위 내용은 와일드카드 일반 유형(목록)을 사용하여 Java 컬렉션에 값을 추가할 수 없는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.