我正在查看某人的其他代碼,並使用包名稱對其進行編碼。使用包名稱在Java中創建對象
String filename = "";
java.io.PrintWriter writer;
writer = new java.io.PrintWriter(new java.io.FileWriter(filename));
語法相當於沒有用包名稱編碼嗎?自從Java允許它使用包名稱編碼嗎?
我正在查看某人的其他代碼,並使用包名稱對其進行編碼。使用包名稱在Java中創建對象
String filename = "";
java.io.PrintWriter writer;
writer = new java.io.PrintWriter(new java.io.FileWriter(filename));
語法相當於沒有用包名稱編碼嗎?自從Java允許它使用包名稱編碼嗎?
您必須使用包名(或「完全合格的名稱」 - 這是指包名和類名一起),如果:
import
你正在使用的類,無論哪個原因。 (通常是精神錯亂)import
編輯類,但仍然使用包名,因爲我不知道。你可以不使用包名和密碼仍然是完全一樣的,你只需要在你的程序的頂部導入從包java.io
類:
import java.io.PrintWriter;
import java.io.FileWriter;
String filename = "";
PrintWriter writer;
writer = new PrintWriter(new FileWriter(filename));
+1表示做同樣事情的另一種語法 – Nicholas 2013-02-09 23:11:13
你可以編寫包含它的包的類名作爲避免歧義的一種方式,例如在程序中有兩個名爲PrintWriter的類,書寫java.io.PrintWriter
將採用來自java.io的一個類。
即使在「標準」類中有相當多的重複名稱也沒有什麼意外 - 例如Date存在於java.util和java.sql中,Queue存在於java.util和javax.jms中 - 所以你會不時遇到這種構造。
哦,我明白了!這是非常整潔的Java! – Nicholas 2013-02-09 23:09:17
使用fully-qualified names是語義上是一樣的,如果給定類是進口。
FQN的一種可能的用法是如果您需要使用兩個具有相同名稱的類,但使用不同的 包。
import java.util.Date;
Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date);
+1不錯的例子! – Nicholas 2013-02-09 23:10:36
+1爲可疑原因:)# – fvu 2013-02-09 23:05:53
同一個源文件中同名的類。所以可以像這樣編碼(仍然看起來像瘋狂)。謝謝! – Nicholas 2013-02-09 23:08:26
@Nicholas這是一種完全有效的編寫Java的方式,根據我的經驗,它非常非常少有必要*,而且對於熟悉JDK的任何人使用'import's的可讀性要低得多。因此,「瘋狂」評論。 – millimoose 2013-02-09 23:12:30