为什么 compareTo() 不适用于对象类型?

问题描述

我有一个 LinkedList 类,其中每个节点都有一个数据,它们的数据是泛型类型 T

public class LinkedList<T> where T : IComparable
{
    private Node<T> _headNode;
    private int _count;
    private Node<T> HeadNode
    {
        get { return _headNode; }
        set { _headNode = value; }
    }
    public LinkedList()
    {
        _headNode = null;
        _count = 0;
    }
}

它有一个方法搜索,寻找我询问的节点,与每个节点的数据进行比较。

public int Search(T item)
        {
            int position = 0;

            Node<T> currentNode = _headNode;
            while (currentNode != null)
            {
                if (currentNode.Data.Compareto(item) == 0) //the problem is here
                {
                    return position;
                }
                position++;
                currentNode = currentNode.Next;
            }
            return -1;
        }

当我用 int 或 string 创建一个列表时,可以,但是当我使用对象类型时,它不起作用。

LinkedList <int> listTest = new LinkedList<int>(); //it's OK
LinkedList <object> listTest2 = new LinkedList<object>(); //it doesn't work

发生错误是因为在这种情况下 compareto 无法比较对象类型。如何比较对象类型?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...