我正在尝试实现具有泛型参数化类型的内部类。

这是我的代码的简短版本:

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)的参数。关于如何解决此问题有任何想法吗?

编辑:我添加了另一个我遇到问题的内部类:TreePreOrderIteratorTAVLTreeBinaryNode的通用类型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/

10-09 08:39