gpt4 book ai didi

java - 泛型和向下转型 (java)

转载 作者:行者123 更新时间:2023-11-29 10:18:58 26 4
gpt4 key购买 nike

过去 3 个小时一直在尝试为此找到一个直接的答案/解决方案,但没有成功,希望你们能提供帮助:

我有以下使用二叉搜索树实现区间树的类:

public class Node<T extends Comparable<T>> implements Comparable<Node<T>> {...}

public class BinarySearchTree<T extends Comparable<T>> {
protected Node<T> root;
...}

public class IntervalNode extends Node<Interval> {...}

public class IntervalTree extends BinarySearchTree<Interval> {...}

当我尝试对 IntervalTree 实例的根成员执行以下转换时,我得到了 ClassCastException:

IntervalNode CurrentNode = (IntervalNode)root; //root being of type Node<Interval>
which IntervalNode extends.

我是 java 的新手,但从我阅读和谷歌搜索的内容来看,这种向下转换应该是可能的,所以我有点迷失了这个异常的原因。到目前为止,我最好的猜测是这是由类型删除引起的,但我还没有找到关于这个问题的直接答案。关于此异常的原因或更好的解决方法有什么想法吗?

最佳答案

你在这里不是向上转型,而是向下转型。 IntervalNode 是 Node<Interval> (因为它扩展了它),但是 Node<Interval>不一定是 IntervalNode。

就像香蕉是水果一样,因为它扩展了它,但水果并不总是香蕉。如果您有一个 Fruit 并将其转换到 Banana,则只有当水果实际上是香蕉时,它才会起作用。如果它是一个苹果,它就会失败。

关于java - 泛型和向下转型 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10465529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com