2013-10-01 30 views
0

我是一名學生,並且我一直在閱讀的幾本書(Java for Dummies,其中之一)曾表示使用通配符導入語句是不好的編程實踐,並鼓勵讀者避免使用它。而在課堂上,我們鼓勵使用它。有人可以解釋爲什麼它是糟糕的編程習慣嗎?爲什麼不使用像java.util。*這樣的通配符導入?

如果是這樣,它對程序性能有什麼不利影響?例如,減慢速度。

+3

這是一個純粹的句法結構;它在運行時不起作用。 – SLaks

+0

@SLaks,當運行時引擎鏈接所有的代碼時,它不會鏈接更多的代碼而不是你需要的代碼嗎?因此,減少啓動時間? – Rohan

+1

我相信編譯器會挑選並選擇實際需要的特定庫。儘管通過通配符導入仍然存在問題。請參閱下面的答案。 – nhgrif

回答

3

插入的越多,你會得到一個命名衝突,其中兩個類具有相同的類名稱的變化越高:

http://en.wikipedia.org/wiki/Name_collision

第一個例子,我可以在Java API中看到的是: http://docs.oracle.com/javase/6/docs/api/javax/naming/Binding.html http://docs.oracle.com/javase/6/docs/api/org/omg/CosNaming/Binding.html

+1

具體來說,'java.util.Date'和'java.sql.Date'是這個問題的一個非常惱人的例子。 – Mureinik

+0

這通常不是那麼大的擔心,但是...對於Android的Java和Java稍有不同,重要的是您要做出正確的具體導入。我相信,Android的標準Java和Java之間有一些重疊。 – nhgrif

+0

不要忘記用戶指定一個已經存在於java API中的類名的情況 – Enigma

相關問題