I am trying to implement an inner class that has a generic parameterized type.
Here is a short version of my code:
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> {
...
}
}
It does not work. Eclipse/Java is giving me a warning that the type T parameter on the inner class is ‘hiding’ the super class’s parameter. Any thoughts on how I can fix this?
EDIT: I added the other inner class I’m having problems with: TreePreOrderIterator. The generic type T will be the same for AVLTree, BinaryNode, and TreePreOrderIterator. The inner classes need to access fields in AVLTree.
EDIT2: Also, the Iterator accesses a BinaryNode<T>, which is a conflict.
(Note: This is part of bigger project I’m doing for a class. If any other information is needed, please ask.)
If you want
TinBinaryNodeto be the same type as the enclosingTassociated withAVLTree, remove the declaration ofTinBinaryNode.If you want the
TinBinaryNodeto be different than the enclosingTassociated with
AVLTree, but youwant to be able to access properties
of the parent
AVLTree, renameTtosomething else.
If you don’t need to access
properties of the enclosing
AVLTree,make
BinaryNodestatic.