“嗨,阿米戈!今天我们将讨论包。”

“计算机上的文件被分组到文件夹中。Java 中的类(每个类都存储在单独的文件中)被分组到包中,包对应于硬盘驱动器上的文件夹。因此,这部分没有什么新知识。不过,我还是要指出两点。”

首先类的唯一全名由其包名加上类名组成。下面是一些示例:”

唯一的全名 包名 类名
java.io.FileInputStream java.io FileInputStream
java.lang.String java.lang String
java.util.ArrayList java.util ArrayList
org.apache.tomcat.Servlet org.apache.tomcat Servlet
Cat 未指定 Cat

“类的全名始终是唯一的。”

“每次都写长名称(即 java.util.ArrayList)非常麻烦。因此,Java 允许导入类。可以在代码中使用其他类的短名称,但在类的开头部分必须明确指出要使用的类。”

“具体怎么做呢?”

“假设有这样一行代码:import java.util.ArrayList;

“在类的开头紧接着包声明的位置,可以指出在代码中使用 ArrayList 时要引用的类。”

“为什么要将事情过分复杂化?类可以有相同的名称吗?”

“是的。在不同的包中可以有名称相同的类。我们不能导入两个具有相同名称的类,因此必须用全名调用其中的一个类。”

“我给你打个比方。你有一个叫吉姆的同事。没问题:每个人都知道他是谁。但是,如果你的办公室里有三个吉姆,那么你就必须用唯一的全名来称呼他们,以免弄混。”

第二最好始终将类放入包内,而不要放在 src 根文件夹中。如果你的类不是很多,那没有问题,但是如果你有很多类,则很容易将它们弄混。应始终在包内创建类。”

“在 Java 中,普遍做法是为类和包赋予有意义的名称。许多公司发布了自己的库(类集),并以公司或网站名称进行命名,以免造成混淆:”

包名 公司/项目名称
org.apache.common
org.apache.tomcat
org.apache.util
Apache
com.oracle.jdbc Oracle
java.io
javax.servlet
Sun, Java
com.ibm.websphere IBM, WebSphere
com.jboss JBoss