gpt4 book ai didi

java - BST 迭代器中的转换错误

转载 作者:行者123 更新时间:2023-11-30 08:25:42 25 4
gpt4 key购买 nike

我在转换泛型时遇到问题。我想做的是使用通用迭代器来帮助我打印出二进制搜索树中的内容。然而,我正在实现的 for 循环说它们是不兼容的类型,因此不会运行。想深入了解我在这里做错了什么。

public class BinarySearchTree<AnyType extends Comparable<? super AnyType>> implements Iterable{...}

public class MainBST {

public <AnyType> void print(BinarySearchTree<? extends AnyType> t ) {

for(AnyType x : t) //incompatible type
System.out.print(x + ", ");

System.out.println("\n");
}
}

最佳答案

问题是你的BinarySearchTree声明。它正在实现原始 Iterable类型,什么时候应该实现 Iterable<AnyType> .与原始Iterator类型,使用增强型 for 循环的代码只知道这些值将与 Object 兼容- 这样你就可以将循环更改为 for (Object x : t)但这当然不是您真正想要的。

我重现了您显示的编译时错误,然后通过将声明更改为:

class BinarySearchTree<AnyType extends Comparable<? super AnyType>> 
implements Iterable<AnyType> {
...
}

(然后更改 iterator 方法以返回 Iterator<AnyType> 当然。)

关于java - BST 迭代器中的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22061701/

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