【发布时间】:2015-09-25 08:55:50
【问题描述】:
我正在尝试创建一个 SkipList,并且我有一个采用通用数据类型的方法:
public void add(E key, Integer value)
{
Node<E> p;
p = find(key);
}
带你到这里:
public Node<E> find(E key)
{
//Start at head
Node<E> p = head;
while (true)
{
while ( (p.getRight().getKey() != Node.posInf) && (p.getRight().getKey().compareTo(key) <= 0 ))
{
p.setRight(p.getRight());
}
//More stuff down here
}
}
问题出在compareTo() 方法上。它说compareTo() 方法对于E 类型是未定义的。在 Eclipse 中,它希望我添加两个这样的类型转换:
((String) p.getRight().getKey().compareTo((String) key) <= 0 )
为什么要String?数据类型可以是任何东西。我尝试对E 进行类型转换,但Eclipse 想将其改回String。任何帮助将不胜感激。
【问题讨论】:
-
如果数据类型可以是任何类型(您没有显示定义),那么编译器不知道它是否有
compareTo()方法,因为它可能是没有。 -
@OlivierPoulin 我试图修改 SkipList 的 this implementation 以包含泛型。这个方法只是遍历列表,寻找合适的地方可以添加节点。
标签: java eclipse generics compare skip-lists