具有外类型参数的内部类

bcr*_*bcr 0 java generics nested-class

我想创建一个内部类,参数化外部类的类型.

我应该首先说,我意识到可能有更好的方法来实现我想要的结果,我愿意接受那些建议,但我将描述现状:

我有一个类Node<T>和一个内部类声明的尝试如下:

public class Node<T> {
    ...

    class NodeIterator<Node<T>> implements Iterator {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这会在编译期间导致语法错误,我推断这是由于我使用外部类,虽然我不确定这一点.

谢谢!

Pau*_*ora 6

简单地说:

public class Node<T> {
    ...

    class NodeIterator implements Iterator<Node<T>> {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

作为内部类,实例NodeIterator具有对外部Node实例的隐式引用.出于这个原因,该类型T仍然在其体内.

请注意,另一种方法是使NodeIterator static丢失隐式外部引用:

static class NodeIterator<T> implements Iterator<Node<T>> {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这里T必须重新声明,并且T与外部类声明的不同.

有关详细信息,请参阅有关嵌套类Java Tutorials文章.