我正在查看其他人的代码,他们使用包名称对其进行编码。
String filename = "";
java.io.PrintWriter writer;
writer = new java.io.PrintWriter(new java.io.FileWriter(filename));
如果没有用包名编码,语法是否等同?既然Java允许,那么用包名对其进行编码有什么用吗?
在以下情况下,您必须使用包名(或“完全限定名” - 这指的是包名和类名):
import
无论出于何种原因,您都没有使用您正在使用的课程。(通常是精神错乱。)import
编辑了这些类,但仍然使用包名,因为我不知道。使用完全限定名称在语义上与给定类是导入的相同。
FQN 的一种可能用法是,如果您需要使用两个具有相同名称但位于不同包中的类。
import java.util.Date;
Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date);
您不能使用包名称,并且代码仍然完全相同,您只需从程序java.io
顶部的包中导入类:
import java.io.PrintWriter;
import java.io.FileWriter;
String filename = "";
PrintWriter writer;
writer = new PrintWriter(new FileWriter(filename));
您可以编写包含其包的类名以避免歧义,例如在您的程序编写中有两个名为 PrintWriter 的类java.io.PrintWriter
将取自 java.io 中的一个。
即使在“标准”类中也有很多重复的名称,这并不奇怪——例如,日期存在于 java.util 和 java.sql 中,队列存在于 java.util 和 javax.jms 中——所以你会从次次。