包中的Java包?

包中的Java包?,java,eclipse,package,Java,Eclipse,Package,我使用的是Eclipse3.8Indigo,我不知道为什么,当我创建一个新包时,新包的目的地在外面。我想在包中创建新包:包中的包。我试图复制/粘贴新创建的包或移动,但它只是复制 例如,我想在我的主源程序包中创建不同的程序包:对话框、视图、表等。例如: com.new.application // this is the the main package created by wizard com.new.application.view // package that contains all

我使用的是Eclipse3.8Indigo,我不知道为什么,当我创建一个新包时,新包的目的地在外面。我想在包中创建新包:包中的包。我试图复制/粘贴新创建的包或移动,但它只是复制

例如,我想在我的主源程序包中创建不同的程序包:对话框、视图、表等。例如:

com.new.application // this is the the main package created by wizard
com.new.application.view // package that contains all views.

包内没有包的概念。每个包都是独立的命名空间。我想如果你转到文件夹视图而不是包视图,你可能会看到一个在另一个下面。

eclipse包浏览器有两个视图选项:平面视图或层次视图。您可能在平面视图中(这是默认设置,谁知道为什么)。单击package视图右上角的小三角形,然后更改package表示,将视图更改为Hierarchy(分层)。

实际上,Java中没有子包这样的东西-每个包都是一个完全独立的实体,名称似乎只是为了方便而分层。例如,具有默认可见性的项在子包中是不可见的,尽管人们可能会这样想

如果您的问题更多地与演示和美学有关,而不是与实质有关,那么您可能正在寻找Eclipse软件包管理器中的分层软件包演示设置:单击软件包管理器右上角的小向下三角形/箭头,并在“软件包演示”中选择“分层”子菜单:


这是一个全局设置,将影响所有已打开/未打开的项目。

首先,您应该选择分层表示

其次,您应该完全授权包名。例如,您有“main”包,并且您将创建“sub”包,您应该使用“main.sub”对其进行授权。如果包中只有一个包,则可能无法看到这些包的层次结构

之后,包视图:

第二个子包创建:

最后,包视图:


“实际上,Java中没有子包这种东西”——严格来说,这不是真的;“子包”一直是JLS中定义的概念(请参阅)。这就是说,分层(不仅仅是表面上的分层)命名结构是为了方便组织,不同的子包之间没有特殊的访问关系。所以除了那个小小的吹毛求疵之外,你们关于软件包的观点都非常正确。