2014-11-27 5 views
2

입력 매개 변수로 인터페이스 Comparable이있는 기능이 있습니다.입력 인터페이스의 구현 유형을 확인하십시오

int sort(Comparable A[]){...} 

가 지금은 A 런타임에로되어있는 해당 유형의 임시 변수를 만들고 싶어 내 정렬 알고리즘에 대한 비교를 할 (Integer 또는 Float 될 수도 있지만 나도 몰라).
어떻게 완료 되나요? 저는 자바 신입생입니다.

+0

원시 형식을 사용하지 마십시오. 그들이 무엇인지 알지 못하면 Google에 알려줍니다. –

+0

왜 그렇게해야할까요? 그냥 다시 'Comparable'에 저장하십시오. –

답변

1

먼저 Raw Types을 사용하지 마십시오. 둘째, 나는 당신이 할 수 있다고 생각하지 않지만, 일 수 있습니다. 임시 변수는 Comparable입니다. 예 :

static <T> void sort(Comparable<T> A[]){ 
    if (A == null || A.length == 0) { 
     return; 
    } 
    Comparable<T> temp = A[0]; 
    // ... 
} 
+0

감사합니다. 문제가 발생했습니다. 이렇게하면 A [j-1] .compareTo (A [j])로 변수 'A'에 액세스 할 수 없습니다. 그것은 컴파일러 오류'실제 인수를 제공합니다. 은 메소드 호출 변환에 의해 T # 1로 변환 될 수 없습니다. – Clawish

+0

이 있습니다. 메서드 위에'A [j-1] .compareTo ((T) A [j])'와'@SuppressWarnings ("unchecked")를 사용하여'T '로 변환합니다. – Clawish

+1

@Clawish 왜냐하면 메소드 선언이 모두 잘못 되었기 때문에 'static > void sort (T [] a)'이어야합니다. –