我正在尝试实现具有泛型参数化类型的内部类。
这是我的代码的简短版本:
public class AVLTree<T extends Comparable<? super T>> implements Iterable<T> {
...
private class BinaryNode<T extends Comparable<? super T>> {
...
}
private class TreePreOrderIterator<E extends Comparable<? super E>> implements Iterator<E> {
...
}
}
这是行不通的。 Eclipse/Java给我警告,内部类的
T
类型参数正在“隐藏”父类(super class)的参数。关于如何解决此问题有任何想法吗?编辑:我添加了另一个我遇到问题的内部类:
TreePreOrderIterator
。 T
,AVLTree
和BinaryNode
的通用类型TreePreOrderIterator
相同。内部类需要访问AVLTree中的字段。EDIT2:另外,
Iterator
访问BinaryNode<T>
,这是冲突。(注意:这是我正在上课的较大项目的一部分。如果需要其他信息,请询问。)
最佳答案
如果要使T
中的BinaryNode
与与T
关联的封闭AVLTree
具有相同的类型,请删除T
中的BinaryNode
声明。
如果您希望T
中的BinaryNode
与封闭的T
不同
与AVLTree
关联,但是您
希望能够访问属性
父AVLTree
的名称,将T
重命名为
其他的东西。
如果您不需要访问
封闭的AVLTree
的属性,
将BinaryNode
设为静态。
关于java - 如何在内部类中使用参数化的泛型类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2009809/