Java类型错误 - 无法返回方法

时间:2017-02-16 21:48:51

标签: java types

我正在尝试使用树结构进行课程学习。在其中一个方法中,我遍历树并根据某个参数返回某个节点的值。但是,由于某些原因,Java编译器抱怨我在这个方法上的返回类型,我不明白它为什么会这样做。

基本上,当我使用以下代码时,程序编译得很好:

 public class BinNode<E extends Comparable<?super E>> {
    private E value;
    private BinNode left;
    private BinNode right;
    private int size;
    public BinNode(E e) {
        value = e;
        left = right = null;
        size = 1;
    }

    public E example(int k) {
        return value;
    }

    public E getValue() {
        return value;
    }
}

但是如果我更改示例方法以返回左或右节点的值而不是当前节点,则会出现编译错误。如,代码:

 public class BinNode<E extends Comparable<?super E>> {
    private E value;
    private BinNode left;
    private BinNode right;
    private int size;
    public BinNode(E e) {
        value = e;
        left = right = null;
        size = 1;
    }

    public E example(int k) {
        return left.getValue();
    }

    public E getValue() {
        return value;
    }
}

给了我这个错误:

BinNode.java:13: error: incompatible types: Comparable cannot be converted to E
        return left.getValue();
                            ^
  where E is a type-variable:
    E extends Comparable<? super E> declared in class BinNode

老实说,我不知道为什么会发生这种情况,并希望能够深入了解正在发生的事情以及如何解决错误。

0 个答案:

没有答案