“嗨,阿米戈!今天我们将讨论包。”
“计算机上的文件被分组到文件夹中。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 |
GO TO FULL VERSION