2014-05-07 36 views
0

在一個類中,我有這樣的一行:Eclipse的說,我需要導入一個類,當我已經導入它的整個包

import javax.swing.*; 

但是在StyledDocument doc = new DefaultStyledDocument(); Eclipse的給我一個錯誤(紅線下的文字),並提供了import StyledDocument (javax.swing.text)

奇怪。我導入了整個swing包,爲什麼我還需要專門導入類?

+1

儘量避免'進口*'(星號)的形式。 – Braj

回答

5

因爲類不在javax.swing包,但在javax.swing.text包。進口不是遞歸的。

+0

真的嗎?奇怪的。爲什麼不? –

+0

因爲[Java中的子包是不是真的子包(https://stackoverflow.com/questions/23521857/design-of-java-classes-and-packages/23522042#23522042) – awksp

+0

因爲Java設計者決定等等。這是有道理的。大多數時候,你主要使用的類是在包樹的頂層(javax.swing中,例如),以及其它包主要包含由根包在內部使用的類。如果有遞歸,進口org.hibernate作爲*,例如,將導入數百無用類,將雜亂的命名空間,並可能導致與其他類的衝突。無論如何,明星進口被認爲是不好的做法。使用Ctrl-Shift-O,Eclipse將導入你所需要的。 –

相關問題