Почему я не могу привести 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в любом случае.

Другие вопросы по тегам