입력 매개 변수로 인터페이스 Comparable
이있는 기능이 있습니다.입력 인터페이스의 구현 유형을 확인하십시오
int sort(Comparable A[]){...}
가 지금은 A
런타임에로되어있는 해당 유형의 임시 변수를 만들고 싶어 내 정렬 알고리즘에 대한 비교를 할 (Integer
또는 Float
될 수도 있지만 나도 몰라).
어떻게 완료 되나요? 저는 자바 신입생입니다.
입력 매개 변수로 인터페이스 Comparable
이있는 기능이 있습니다.입력 인터페이스의 구현 유형을 확인하십시오
int sort(Comparable A[]){...}
가 지금은 A
런타임에로되어있는 해당 유형의 임시 변수를 만들고 싶어 내 정렬 알고리즘에 대한 비교를 할 (Integer
또는 Float
될 수도 있지만 나도 몰라).
어떻게 완료 되나요? 저는 자바 신입생입니다.
먼저 Raw Types을 사용하지 마십시오. 둘째, 나는 당신이 할 수 있다고 생각하지 않지만, 은 일 수 있습니다. 임시 변수는 Comparable
입니다. 예 :
static <T> void sort(Comparable<T> A[]){
if (A == null || A.length == 0) {
return;
}
Comparable<T> temp = A[0];
// ...
}
감사합니다. 문제가 발생했습니다. 이렇게하면 A [j-1] .compareTo (A [j])로 변수 'A'에 액세스 할 수 없습니다. 그것은 컴파일러 오류'실제 인수를 제공합니다.
이 있습니다. 메서드 위에'A [j-1] .compareTo ((T) A [j])'와'@SuppressWarnings ("unchecked")를 사용하여'T '로 변환합니다. – Clawish
@Clawish 왜냐하면 메소드 선언이 모두 잘못 되었기 때문에 'static
원시 형식을 사용하지 마십시오. 그들이 무엇인지 알지 못하면 Google에 알려줍니다. –
왜 그렇게해야할까요? 그냥 다시 'Comparable'에 저장하십시오. –