2010-02-13 59 views
6

可能重複:
Import package.* vs import package.SpecificType如何導入java類?

我可以這樣做:的

import java.awt.* 

代替:

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

如果兩種方式都科爾等哪一個更好?

+1

精確複製:http://stackoverflow.com/questions/187453/import-package -vs-import-package-specifictype – 2010-02-13 00:10:48

+1

@Mark - 我不這麼認爲,但是感謝你的觀察,我想知道你是否願意/能夠在下面的答案中加入一些東西? – 2010-02-13 00:30:35

+0

我已經做了... – 2010-02-13 00:50:42

回答

14

您可以導入通用包,但最好是更明確地導入您需要的特定類。它有助於防止名稱空間碰撞問題,並且更好。另外,如果您使用Eclipse和快捷鍵CTRL + SHIFT + O,它將自動生成顯式導入,提示您輸入不明確的導入。

+1

+1我提名接受此答案。 – 2010-02-13 00:18:03

+1

@Jon - 感謝您的輸入,哪些命名空間碰撞會導致?編譯器會返回錯誤? – 2010-02-13 00:33:07

+1

例如如果使用Date date = new Date();並導入java.util。*和import java.sql。*,最終會出現「Date類型不明確」的語法錯誤。 – Jon 2010-02-13 00:46:23

4

一個更明確。

編輯:第二種方法的優點是可讀性,命名空間沒有衝突等,但如果你有一百個類從一個包導入,你最好用第一種方法。

+4

爲什麼?有什麼優勢? – Dustman 2010-02-13 00:14:59

7

它將只導入java.awt中的類,所以你要導入的java.awt.event太:

import java.awt.* 
import java.awt.event.*; 

第二種方法可能會少加載的類,但也救不了你多少內存。

+2

++。編譯器對於只導入實際使用的類很有好處,因此導入特定類的唯一好處是可以避免名稱不匹配的可能性。 – Dustman 2010-02-13 00:14:08

+2

一個具體的例子是如果你導入java.awt。*和java.util。*,然後嘗試使用List。在這種情況下,您必須導入特定的類。 – 2010-02-13 00:33:51

6

他們都很好。最上面的一個不太詳細,但第二個將允許您具體介紹您導入的類,使您可以避免碰撞。由於大多數IDE將允許您隱藏導入語句,因此第二種語義的詳細程度並不是問題。

考慮

import java.util.*; 
import java.awt.*; 

當您嘗試聲明List,你將有java.awt.Listjava.util.List之間的碰撞