javac 错误不可转换类型 java.lang.Double

标签 java compiler-errors terminal javac

我在这里发现了与我的问题非常相似的问题,但我无法通过其他帖子解决我的问题。抱歉重复发布可能...

我试图在我的终端中运行我的代码,但我收到了一个 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;
        }

谢谢!

最佳答案

由于 MinHeap 持有的元素是 E 类型,您要删除相同类型的元素,因此 remove() 方法的返回类型也应该是 E

当你声明一个 MinHeap 实例持有 Double 类型的对象时,返回类型无论如何都会变成 Double ,你可以这样写:

MinHeap<Double> minHeap = ....
....
Double removedValue = minHeap.remove();

您的代码给出了编译错误,因为它对于保存 String 对象的 MinHeap 没有意义,对吗?

关于javac 错误不可转换类型 java.lang.Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12852230/

相关文章:

java - com.fasterxml.jackson.core.JsonGenerationException : Can not write a field name, 期待一个值

visual-c++ - Windows上的__block以便编译libdispatch

python - 没有括号打印不起作用(Python 2.7)

bash - 解压到特定目的地

java - Hibernate 可以将列的子集映射到内部子 Pojo 中

java - Android - 如何获取对自定义布局中 View 的引用?

java - 监听进程的停止和启动

java - 我如何在if语句中包含多个条件?

shell - 如何从终端中的路径中删除目录?

macos - mac 命令键在终端中的表示是什么?