2014-09-19 19 views
2

是使用正在使用import java.util。*不合需要?

import java.util.* 

不利於相比,呼籲特定的包?我在想,如果它的顯著低效的程序,以在所有的包裝調用,而不是把它們列出了具體如:

import java.util.Scanner; 
import java.util.Math; 

等我準備面試,並希望確保我有一個好編碼實踐。

+0

這是否回答你的問題:http://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a-java-import-statement-bad? – Pshemo 2014-09-19 00:28:57

+0

是的。謝謝。我想知道如果採訪者不會意識到我正在使用import java.util。*? (因爲我可能會處理一個小程序) – greenleaftreee 2014-09-19 00:40:41

+0

如果你要在紙上寫代碼,那麼我會說使用通配符'*'是可以的(你可以在每個'*'附近留下注釋來描述哪些類這個包將用來顯示與其他'*'不會發生衝突,如果你能夠使用IDE,那麼更喜歡顯式導入(Eclipse可以使用Ctrl + + Shift +組織它們) 'O')。 – Pshemo 2014-09-19 00:44:58

回答

2

導入*的問題是它增加了命名衝突的可能性。

讓我們假設,在你的程序中,有一個名爲EventListener類,因爲java.util也有一個叫EventListener類,對你有一些衝突,處理的方式,但你甚至不關心,在此背景java.util.EventListener

這真的可以避免,只需不導入*,只導入真正需要的特定類。

+0

我有時遇到麻煩,通過導入帶有星號的java.awt和java.util包,然後嘗試使用java.util包的List接口,忘記了List類存在於java.awt包中。編譯器將無法確定是否要從一個包或另一個包使用類/接口。 – TNT 2014-09-19 00:34:24

+0

@TNT在這種情況下,除''*'通配符外,您可以添加要使用的'List'的顯式導入,例如'import java.awt。*; import java.util。*; import java.util.List;'(最後一次導入會讓編譯器確定應該使用哪個包'List')。 – Pshemo 2014-09-19 00:37:30

+0

@Pshemo這是一個很好的觀點。我通常只是在這些情況下將包名放在類名的前面,即'java.util.List list ...' – TNT 2014-09-19 00:42:19

0

@PeterPeiGuo是對的,除此之外,我想說我不使用導入xxx.xx. *,因爲你需要知道你應該使用哪個類,哪些類不是。您需要了解您的代碼/應用程序的所有內容。所以導入xxx.xx.XXX在我看來更好。