Java 从单独的类访问内部类
我正在研究一个双端队列的实现。我有一个类Deque,它有一个内部类节点来表示列表中的项。我在Deque中声明类(本身是一个公共类),如下所示:Java 从单独的类访问内部类,java,Java,我正在研究一个双端队列的实现。我有一个类Deque,它有一个内部类节点来表示列表中的项。我在Deque中声明类(本身是一个公共类),如下所示: public class Node(){ // } 现在,使用基本对象创建语法创建新节点在Deque类中非常简单: Node newNode = newNode(arg1); 但是,我希望能够从一个单独的类(提供单元测试的DequeTest类)声明新节点。当我尝试使用上述语法创建一个新节点时,我得到一个错误,指出节点类不可见。我正在使用预定义的API
public class Node(){
//
}
现在,使用基本对象创建语法创建新节点在Deque类中非常简单:
Node newNode = newNode(arg1);
但是,我希望能够从一个单独的类(提供单元测试的DequeTest类)声明新节点。当我尝试使用上述语法创建一个新节点时,我得到一个错误,指出节点类不可见。我正在使用预定义的API,因此无法创建任何新的公共方法。返回新节点的私有createNode()方法是否最优?即使这样似乎也不行,因为编译器在我使用Node关键字时也会抛出一个错误 不可能。这就是创建内部类的全部意义:它只针对父类。你为什么要这么做?如果在其他地方使用
节点
,它首先不应该是一个内部类,因为它不属于任何一个类。您可以考虑创建一个公共节点类,然后从“代码>节点< /代码>中生成单独的内部类子类。
请参阅:对于API文档。内部类不是静态的,因此需要外部类的实例。您是否尝试过
new Deque().new Node()代码>?只需将内部类设置为静态:您尝试过吗?您搜索过您的确切错误消息吗?无论如何,这里有一个副本。您阅读过链接到的文章吗?只要内部类引用外部类的实例,就完全有可能获得内部类的实例。换句话说,要创建内部类的实例,需要外部类的实例。此外,术语父类作为超类的不同名称存在,它与外部类无关。