2016-03-29 26 views
2

它看起來很緊湊,但具體指定每個基本子類都很耗時,需要記住更多。一次導入某個類的所有子類是不好的做法嗎?

具體而言,究竟是import java.applet.*; & import java.*;

+3

通過鏈接:http://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a-java-import-statement-bad – Kartic

+1

有些人認爲通配符導入不好練習,句號,例如請參閱[Google Java風格指南](https://google.github.io/styleguide/javaguide.html#s3.3.1-wildcard-imports)。 –

回答

5

之間的差異具體而言,究竟是第一個導入使所有類型(類import java.applet.*; & import java.*;

之間的區別,接口,枚舉),編譯器可以看到java.applet包,而第二個包可以看到java包中的所有類型。

請注意,程序包之間沒有「子類」關係 - 程序包組成程序包層次結構,但不是類層次結構。使用通配符導入(import package.*)時,將導入一個包中的所有類型,而不是整個包層次結構中的所有類型。特別是,import java.*確實是而不是進口java.applet或者其他任何低於java的包。

實際上,順便說一下,您應該避免使用通配符導入,因爲它們會污染名稱空間,並且在不同包中存在相同類型名稱時可能會導致命名衝突。大多數IDE今天自動組織導入(半),所以不需要使用通配符導入。

+0

感謝澄清歧義,一旦我得到15回購將upvote您的答案。 –

相關問題