Java BST迭代器中的强制转换错误
我在为泛型铸造方面遇到了麻烦。我想做的是使用一个泛型迭代器来帮助我打印出二进制搜索树中的内容。然而,我正在实现的for循环表示它们是不兼容的类型,因此不会运行。想了解一下我做错了什么Java BST迭代器中的强制转换错误,java,generics,Java,Generics,我在为泛型铸造方面遇到了麻烦。我想做的是使用一个泛型迭代器来帮助我打印出二进制搜索树中的内容。然而,我正在实现的for循环表示它们是不兼容的类型,因此不会运行。想了解一下我做错了什么 public class BinarySearchTree<AnyType extends Comparable<? super AnyType>> implements Iterable{...} public class MainBST { public <AnyTy
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问题在于您的BinarySearchTree
声明。它正在实现rawIterable
类型,而它应该实现Iterable
。对于原始迭代器
类型,使用增强for循环的代码只知道值将与对象
兼容,因此您可以将循环更改为for(Object x:t)
,但这当然不是您真正想要的
我复制了您显示的编译时错误,然后将声明更改为:
class BinarySearchTree<AnyType extends Comparable<? super AnyType>>
implements Iterable<AnyType> {
...
}
class BinarySearchTree使您的类真正实现了Iterable
,还是实现了Iterable
?听起来应该是后者。。。