如何在Java中正确组织和嵌套包

时间:2014-04-23 14:51:27

标签: java package

如果我要使用以下方法,请使用Java Tutorial获取包命名约定:

org.example.hyphenated_name.user

org.example.hyphenated_name.product

这将如何转化为实际创建此包结构。我是否会为org创建一个单独的包,然后在org内创建example等等,或者它只是2个包org.example.hyphenated_name.userorg.example.hyphenated_name.product

基本上我想知道的是.是否仅用于命名分离,或者它是否用于表示每次物理创建新包。

2 个答案:

答案 0 :(得分:3)

这是它在磁盘驱动器上的物理外观:

$ mkdir -p org/example/hyphenated/name/user 
$ mkdir -p org/example/hyphenated/name/product
$ tree org
org
└── example
    └── hyphenated
        └── name
            ├── product
            └── user

5 directories, 0 files

实际上,你有一个包结构:

  • 组织
  • org.example
  • org.example.hyphenated
  • org.example.hyphenated.name
  • org.example.hyphenated.name.product
  • org.example.hyphenated.name.user

通过创建这样的结构,您现在可以使用每个包进行不同的操作。 org.example.hyphenated.name.product中的产品特定操作类和org.example.hyphenated.name.user package中的特定于用户的操作类。这样你就可以把同时使用这两个包的类放在例如org.example.hyphenated包。通过这种方式,您可以创建一个良好构建的应用程序结构,以便其他人(以及2-3个月内为您)更容易阅读。

编辑: 通常,您不需要关心为包创建文件夹,因为您的IDE应该照顾而不是您。

答案 1 :(得分:2)

包不是您必须创建的“东西”(除了您通常必须创建用于存储源文件的目录层次结构)。你只是说你的类属于某个包,编译器说“OK,不管你想要什么”。 package_a.package_bpackage_a.package_b.package_c之间没有对语言语义有任何影响的内置关系。 (我的意思是,如果你在package_a.package_b.package.c中有一个班级,那么在该班级中,package_a.package_b中的班级没有什么特别的,而不是package_z.package_y。在这两种情况下,它只是“其他一些包”。)