Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从单独的类访问内部类_Java - Fatal编程技术网

Java 从单独的类访问内部类

Java 从单独的类访问内部类,java,Java,我正在研究一个双端队列的实现。我有一个类Deque,它有一个内部类节点来表示列表中的项。我在Deque中声明类(本身是一个公共类),如下所示: public class Node(){ // } 现在,使用基本对象创建语法创建新节点在Deque类中非常简单: Node newNode = newNode(arg1); 但是,我希望能够从一个单独的类(提供单元测试的DequeTest类)声明新节点。当我尝试使用上述语法创建一个新节点时,我得到一个错误,指出节点类不可见。我正在使用预定义的API

我正在研究一个双端队列的实现。我有一个类Deque,它有一个内部类节点来表示列表中的项。我在Deque中声明类(本身是一个公共类),如下所示:

public class Node(){
//
}
现在,使用基本对象创建语法创建新节点在Deque类中非常简单:

Node newNode = newNode(arg1);

但是,我希望能够从一个单独的类(提供单元测试的DequeTest类)声明新节点。当我尝试使用上述语法创建一个新节点时,我得到一个错误,指出节点类不可见。我正在使用预定义的API,因此无法创建任何新的公共方法。返回新节点的私有createNode()方法是否最优?即使这样似乎也不行,因为编译器在我使用Node关键字时也会抛出一个错误

不可能。这就是创建内部类的全部意义:它只针对父类。你为什么要这么做?如果在其他地方使用
节点
,它首先不应该是一个内部类,因为它不属于任何一个类。您可以考虑创建一个公共节点类,然后从“代码>节点< /代码>中生成单独的内部类子类。

请参阅:对于API文档。

内部类不是静态的,因此需要外部类的实例。您是否尝试过
new Deque().new Node()?只需将内部类设置为静态:您尝试过吗?您搜索过您的确切错误消息吗?无论如何,这里有一个副本。您阅读过链接到的文章吗?只要内部类引用外部类的实例,就完全有可能获得内部类的实例。换句话说,要创建内部类的实例,需要外部类的实例。此外,术语父类作为超类的不同名称存在,它与外部类无关。