소개
배열 요소가 공통 유형 매개변수는 제네릭과 배열의 공변적 동작 사이의 상호 작용으로 인해 Java에서 고유한 문제를 제시합니다.
질문
일반 유형은 비교 가능합니까? Comparable 얼굴 문제를 확장하는 일반 배열로 객체 배열을 캐스팅하려고 시도하여 다음 질문을 제기합니다. 해결 방법이 있습니까?
답변
일반 및 배열: 호환성 퍼즐
제네릭과 배열은 유형을 처리하는 방식이 근본적으로 다릅니다.
이러한 불일치로 인해 일반 배열이 생성됩니다. 특정 클래스를 확장하는 유형은 불가능합니다.
Array.newInstance(): 해결 방법
한 가지 가능한 해결책은 Array.newInstance() 메서드를 사용하는 것입니다.
<code class="java">private Comparable[] hashtable; ... hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);</code>
이 접근 방식을 사용하면 일반 유형의 상위 유형 배열(이 경우 비교 가능)을 생성할 수 있지만 이 배열은 원하는 일반 유형이 아니라는 점에 유의하는 것이 중요합니다.
제네릭과 함께 배열을 사용하면 안 되는 이유는 무엇입니까?
해결 방법이 있지만 일반적으로 다음과 같은 이유로 제네릭과 함께 배열을 사용하는 것은 권장되지 않습니다.
대안: ArrayList
더 적합한 옵션은 ArrayList를 사용하는 것입니다. , 일반 개체 컬렉션을 관리하는 효율적이고 형식이 안전한 방법을 제공합니다. ArrayList는 제네릭의 유연성을 제공하고 배열 및 제네릭과 관련된 잠재적인 함정을 방지합니다.
위 내용은 비교 가능 항목을 확장하는 일반 배열을 Java에서 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!