我在这里发现了与我非常相似的问题,但我无法在其他帖子中解决我的问题。很抱歉发了两个帖子。
我试图在我的终端上运行我的代码,但是我得到了一个javac错误,即使我的代码在Eclipse中看起来很好。
public class MinHeap<E extends Comparable<E>> {
List<E> h = new ArrayList<E>();
ArrayList<E> arrayPostingsList = new ArrayList<E>();
//some more code
public double remove() {
E removedNode = h.get(0);
E lastNode = h.remove(h.size() - 1);
percolateDown(0, lastNode);
//this seems to be the problem
return (Double) removedNode;
}这是我得到的错误
MinHeap.java:40: inconvertible types
found : E
required: java.lang.Double
Double B = (Double) removedNode;
^
1 error有什么建议吗?
有了你的所有输入,我已经改变了返回类型,它工作得很好。
public E remove() {
E removedNode = h.get(0);
E lastNode = h.remove(h.size() - 1);
percolateDown(0, lastNode);
return removedNode;
}谢谢!
发布于 2012-10-12 12:27:02
由于MinHeap持有的元素的类型为E,因此您要删除的是同一类型的元素,因此remove()方法的返回类型也应为E。
当您声明一个包含Double类型对象的MinHeap实例时,返回类型无论如何都会变成Double,您可以按如下方式编写它:
MinHeap<Double> minHeap = ....
....
Double removedValue = minHeap.remove();您的代码给出了编译错误,因为它对包含String对象的MinHeap没有意义,对吧?
https://stackoverflow.com/questions/12852230
复制相似问题