施放异常?

Whi*_*zil 0 java classcastexception nodes binary-search-tree

因此,ClassCastException当我试图将我投入我的时Node<T>,我会得到这个AVLNode<T>.不知道为什么.

这是它抛出异常的地方.

Node<Integer> n1 = new Node<Integer>(3, null);
    AVLNode<Integer> n2 = (AVLNode<Integer>) n1;
Run Code Online (Sandbox Code Playgroud)

课程看起来如何......

public class Node<T extends Comparable<T>> {

public Node<T> right;

public Node<T> left;

public Node<T> parent;

public T data;

public Node(T data, Node<T> parent) {
    this.data = data;
    this.parent = parent;
} // ...
Run Code Online (Sandbox Code Playgroud)

而另一个类在单独的文件中:

public class AVLNode<T extends Comparable<T>> extends Node<T> {

public int height = 1;

public AVLNode(T data, Node<T> parent) {
    super(data, parent);
} //...
Run Code Online (Sandbox Code Playgroud)

错误消息:线程"main"中的异常java.lang.ClassCastException:custom.trees.Node无法强制转换为custom.trees.AVLNode

Eva*_*les 6

基本上,因为a Node不是AVLNode- 你创建了它Node,所以它是a Node.如果你把它创建为一个AVLNode你可以把它投射到一个Node,但不是相反的方式.