1

为什么 java 建议在包名称的开头使用 TLD,即为什么必须是

package com.example.pack;

它也可以

package pack.example.com;

只是想知道决定将 TLD 放在开头的原因可能是什么。

4

7 回答 7

3

这个约定被记录在这里,它被证明并且适用于很多事情。

宇宙是com并且可以是SGORG或任何TLD :)。

其次是您的域example

其次是你的项目pack

其次是你的层web | ejb | data

com.example.pack.web
com.example.pack.ejb
com.example.pack.data
com.example.project2.web
com.example.project2.ejb
com.example.project2.data
com.singtel.projecta.web
com.singtel.projectb.data
于 2012-05-04T10:12:51.563 回答
3

该包对应于文件系统中的目录。pack.example.com 和 pack.example2.net 都在同一个目录中,即使 url 表明它们不相关,但是对于 com.example.pack 和 net.example2.pack,相关的包在同一个目录中.

于 2012-05-04T10:14:38.173 回答
0

主要动机是通过分层组织类和资源(如文件系统)来避免命名空间冲突。将文本文件引用为MyDoc.txt\My Documents\C:. 使用您的 TLD 名称,颠倒过来,可以更自然地组织事情,从更一般到更具体。

于 2012-05-04T10:20:57.557 回答
0

从更一般到更具体,这只是一种常见的约定,反之亦然。

同样,我们写道:

  • package_name. class_name(而不是class_name. package_name);
  • object. member;
  • outer_class. inner_class;

等等。

于 2012-05-04T10:14:48.297 回答
0

Java 包名称应始终从最不具体到最具体读取。因此,它应该始终以域名开头。

于 2012-05-04T10:15:08.780 回答
0

一个很好的理由是类名是前缀而不是包名后缀——所以你在每个点之后都朝着同一个方向移动。此外,包名称映射到目录名称,这也强制使用最广泛的优先顺序。

于 2012-05-04T10:15:09.957 回答
0

在树中,树干是主要部分,叶子是不太常见的部分。

包名是一棵树。

考虑在类路径中的所有类中搜索您编写的类。你会开始 com.* com.example.* 等等,直到你找到你的。

于 2012-05-04T10:15:14.093 回答