5

我正在查看其他人的代码,他们使用包名称对其进行编码。

String filename = "";

java.io.PrintWriter writer;

writer = new java.io.PrintWriter(new java.io.FileWriter(filename));

如果没有用包名编码,语法是否等同?既然Java允许,那么用包名对其进行编码有什么用吗?

4

4 回答 4

8

在以下情况下,您必须使用包名(或“完全限定名” - 这指的是包名和类名):

  1. 您需要在同一个源文件中使用两个同名的类。
  2. import无论出于何种原因,您都没有使用您正在使用的课程。(通常是精神错乱。)
  3. import编辑了这些类,但仍然使用包名,因为我不知道。
于 2013-02-09T23:05:09.693 回答
7

使用完全限定名称在语义上与给定类是导入的相同。

FQN 的一种可能用法是,如果您需要使用两个具有相同名称但位于不同包中的类。

import java.util.Date;

Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date);
于 2013-02-09T23:05:20.997 回答
3

不能使用包名称,并且代码仍然完全相同,您只需从程序java.io顶部的包中导入类:

import java.io.PrintWriter;
import java.io.FileWriter;

String filename = "";
PrintWriter writer;

writer = new PrintWriter(new FileWriter(filename));
于 2013-02-09T23:04:20.663 回答
3

您可以编写包含其包的类名以避免歧义,例如在您的程序编写中有两个名为 PrintWriter 的类java.io.PrintWriter将取自 java.io 中的一个。

即使在“标准”类中也有很多重复的名称,这并不奇怪——例如,日期存在于 java.util 和 java.sql 中,队列存在于 java.util 和 javax.jms 中——所以你会从次次。

于 2013-02-09T23:04:55.447 回答