Почему я не могу привести T к другому объекту в моем компараторе?
Я пытаюсь создать компаратор, который я могу использовать для сортировки строк по их естественному упорядочению. Я хочу, чтобы компаратор был универсальным, чтобы через него можно было проходить через строки любого класса.
Например, у меня есть класс Name
который реализует сопоставимые так, что естественное упорядочение Name
строки по длине строки. Однако бывают ситуации, когда я хочу Name
вместо этого строки сортируются по их естественному порядку. Для этого я пишу компаратор ниже.
import java.util.Comparator;
public class AlphabeticalOrderComparator implements Comparator<T> {
public int compare(T obj1, T obj2) {
Name name1 = (Name)obj1;
Name name2 = (Name)obj2;
return name1.name.compareTo(name2.name);
}
Ошибка, которую я получаю с этим кодом, состоит в том, что он говорит мне, что T не может быть преобразован в тип. Я считаю, что проблема в том, T
в Name
,
Кто-нибудь может сказать мне, как я могу исправить эту ошибку?
1 ответ
T
даже не определен в вашем коде. Тебе нужно было написать
class AlphabeticalOrderComparator<T> implements Comparator<T>
Но даже это не имеет смысла. Что это должно быть
class AlphabeticalComparator implements Comparator<Name>
... потому что ваш Comparator
работает только для Name
в любом случае.