> Java > java지도 시간 > Java 컬렉션의 `remove()` 메소드가 일반적이지 않은 이유는 무엇입니까?

Java 컬렉션의 `remove()` 메소드가 일반적이지 않은 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-11 09:22:10
원래의
560명이 탐색했습니다.

Why Aren't Java Collections' `remove()` Methods Generic?

Java 컬렉션의 제거 메소드가 일반이 아닌 이유는 무엇입니까?

Java 컬렉션 프레임워크는 컬렉션과 맵 모두에 대해 제거() 메소드를 제공합니다. 그러나 이 메서드는 일반적이지 않습니다. 즉, E 유형 매개 변수가 아닌 개체를 인수로 받아들입니다. 이 결정은 Remove()를 제네릭으로 만드는 것의 잠재적 이점에 대한 의문을 제기했습니다.

remove()를 제네릭으로 만드는 데 대한 한 가지 주장은 실수로 컬렉션에서 호환되지 않는 유형을 제거하려고 할 때 컴파일 시간 오류를 방지할 수 있다는 것입니다. . 예를 들어, Collection 실수로 Set을 전달하면 나중에 디버깅 문제가 아닌 컴파일 시간 오류가 발생합니다.

그러나 Remove()가 일반적이지 않은 이유는 주로 다음을 허용하기 때문입니다. 엄격한 유형 검사보다는 동등성을 기반으로 객체를 제거합니다. Remove() 메서드 사양에 따르면 제거할 요소는 (o==null ? e==null : o.equals(e))가 true인 객체 e로 식별됩니다. 이렇게 하면 제거된 객체가 제거() 메서드에 전달된 객체와 동일한 유형일 필요가 없으므로 요소 제거에 유연성이 허용됩니다.

예를 들어 Map. LinkedList를 인수로 사용하여 제거()를 호출할 때 List의 다른 구현이더라도 동일한 내용을 가진 목록인 키를 제거해야 합니다. Remove()가 일반적이고 단일 유형 매개변수로 제한되어 있다면 이는 불가능합니다.

위 내용은 Java 컬렉션의 `remove()` 메소드가 일반적이지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿