2014-11-27 5 views
2

У меня есть функция, которая имеет интерфейс Comparable в качестве входного параметра.Определите тип ввода ввода интерфейса

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

Теперь я хочу сделать временную переменную этого типа которой A находится во время выполнения (может быть Integer или Float, но я не знаю), делать сравнения для моего алгоритма сортировки.
Как это делается? Я новичок в Java.

+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' с помощью' A [j-1] .compareTo (A [j]) '. Он дает ошибку компилятора 'фактический аргумент. Сопоставимый не может быть преобразован в T # 1 путем преобразования вызова метода. – Clawish

+0

Получил его. Выделите его в 'T', используя' A [j-1] .compareTo ((T) A [j]) 'и' @SuppressWarnings ("unchecked") 'над этим методом. – Clawish

+1

@Clawish, потому что ваше объявление метода не так, оно должно быть 'static > void sort (T [] a)'. –