비교 인터페이스에 의해 생성 된 캐스트 오류 방지하는 방법 :내가 자바의 제네릭 클래스가
public class PriorityList<T extends Number> implements Comparable<T> {
T[] array = (T[]) new Object[10];
을 그리고 오류를 가지고
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Number;
Erorr이 주조로 만들 것입니다 (T []) new Object [10].
배열 요소를 정렬해야하기 때문에 비교 방법이 필요합니다. 그래서이 클래스를 선언 할 수 없습니다.
public class PriorityList<T extends Number>
기타 옵션은 T 값을 유지하는 자체 링크 목록에 의해 만들어집니다. 그러나이 주조 문제를 해결하는 또 다른 방법은
(T []) new Object [10];
?
PS 컬렉션은 사용하기에 적합합니다.
@RonDahlgren 말하기를 불필요한 캐스트를 버리고 캐스팅해야하는 오래된 Java 책 (Java 1.1)이 있습니다. 참조에 저장하고 참조를 가져 오는 것이 캐스팅보다 시간이 덜 걸리기 때문입니다. – gparyani
배열, 제네릭 및 형식 안전 : 두 개만 선택할 수 있습니다. –
@gparyani 좋은 지적. 그의 컬렉션의 사용 패턴에 따라 머리에 이미 주조 된 참조를 유지하는 것이 합리적 일 수도 있습니다 –