对于我们的任务,我们需要为神经网络编写代码。我计划这样做的方法是编写一个Node
类,它是网络中的一个节点;一个Layer
类,它是一个节点层和一个NeuralNet
类,它是一个层网络。
我在理解Java设计用于导入的方式方面遇到了很多麻烦。对我而言,将Node
类包含在我的Layer
类中,将Layer
类包含在我的NeuralNet
类中似乎应该是一件简单的事情,但Java不会就像从默认包中导入一样。
我读过的内容表明,您导入的任何内容都需要包含在一个包中,并且包中有自己的子目录。由于我计划构建我的类的方式,这让我看起来像是一个笨拙且不必要的复杂目录结构,即。
neuralpkg.layerpkg.nodepkg.Node
有人可以向我解释这是否是实现我想要的结构的唯一方法,或者是否有一些我错过的更简单的方法?
为了它的价值我可以毫不费力地用C / C ++编写它,但尝试以类似的方式导入只会让我心痛。
答案 0 :(得分:4)
您不需要像neuralpkg.layerpkg.nodepkg
那样对包进行分层,其中“neural”,“layer”和“node”是各个类的子包。
您只需创建一个名为“ben”的包,并将所有类放在那里。因此,在您的源目录中,您将拥有如下布局:
--/ben
----Layer.java
----NeuralNetwork.java
----Node.java
然后,每个类定义应以行package ben;
开头。
同一个包中的类不需要互相导入。
答案 1 :(得分:2)
更像这样:
创建一个名为src的目录。这是所有java文件的根目录。在它下面,创建一系列名为
的目录com-> ben->神经或某些此类。将所有java源文件放在神经文件夹中。
另外,你使用的是什么IDE?为Netbeans,Eclipse或IntelliJ的免费版本打分。 Java需要一个好的IDE。当您创建一个新类时,IDE将为您执行package语句,并极大地帮助您进行导入。
答案 2 :(得分:1)
将Java中的包视为C ++中的命名空间。从它听起来,似乎你想要在同一名称空间中的一切。默认包可以被认为是未命名的命名空间(我认为)。
您应该做的只是创建一个简单的包com.class.hw01
。把你所有的课程都放在那里。这样你甚至不需要导入任何东西,你可以像在C ++中一样声明/使用你的类,如果它们在同一名称空间中。