![](/img/trans.png)
[英]Why does the Java compiler complain about explicit import name conflicts but not import package.*?
[英]Java: Use import or explicit package / class name?
我正在編寫一個非常基本的應用程序,擴展 Swing JFrame。 明確引用之間有什么區別:
public class LineTest extends javax.swing.JFrame {
...
或預先導入 class :
import javax.swing.JFrame;
public class LineTest extends JFrame {
...
您何時(以及為什么)會使用一種技術而不是另一種技術?
沒有真正的區別; 生成的字節碼將完全相同。 import
語句實際上只是告訴編譯器“當我寫JFrame
時,我實際上是指javax.swing.JFrame
”的一種方式。
如果您在不同的包中有兩個具有相同名稱的類,您可能希望使用完全限定的 package 名稱。 標准庫中的一個常見示例是類java.util.Date
和java.sql.Date
。
唯一的區別在於源代碼。 使用完全限定名稱會導致代碼的可讀性降低,因此每個人都幾乎只使用導入。 我見過一致使用的完全限定名稱的唯一地方是在生成的代碼中。
在常規代碼中使用完全限定名稱的唯一原因是當您必須使用具有相同簡單名稱的兩個類時(例如java.util.List
和java.awt.List
) - 在這種情況下沒有其他選擇。
對於編譯器,它沒有任何區別。 使用全限定名的缺點是每次使用 class 時都必須編寫它。 如果我在不同的包中有兩個同名的類,我只使用完整的限定名。 這樣你就可以在這兩個類之間有所不同
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.