为什么我不能将T语言转换为比较器中的另一个对象?

Oma*_*r N 0 java casting comparator

我正在尝试制作一个比较器,我可以用它来按自然顺序对字符串进行排序.我希望比较器是通用的,这样我就可以通过它传递来自任何类的字符串.

例如,我有一个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);
    }
Run Code Online (Sandbox Code Playgroud)

我得到的代码错误是它告诉我T无法解析为一个类型.我相信问题出在我的类型转换TName.

谁能告诉我如何解决这个错误?

Lou*_*man 5

T甚至没有在您的代码中定义.你需要写

class AlphabeticalOrderComparator<T> implements Comparator<T>
Run Code Online (Sandbox Code Playgroud)

但即使这样也没有意义.应该是什么

class AlphabeticalComparator implements Comparator<Name>
Run Code Online (Sandbox Code Playgroud)

...因为无论如何你Comparator唯一的作品Name.