在一個類中,我有這樣的一行:Eclipse的說,我需要導入一個類,當我已經導入它的整個包
import javax.swing.*;
但是在StyledDocument doc = new DefaultStyledDocument();
Eclipse的給我一個錯誤(紅線下的文字),並提供了import StyledDocument (javax.swing.text)
奇怪。我導入了整個swing
包,爲什麼我還需要專門導入類?
在一個類中,我有這樣的一行:Eclipse的說,我需要導入一個類,當我已經導入它的整個包
import javax.swing.*;
但是在StyledDocument doc = new DefaultStyledDocument();
Eclipse的給我一個錯誤(紅線下的文字),並提供了import StyledDocument (javax.swing.text)
奇怪。我導入了整個swing
包,爲什麼我還需要專門導入類?
因爲類不在javax.swing
包,但在javax.swing.text
包。進口不是遞歸的。
真的嗎?奇怪的。爲什麼不? –
因爲[Java中的子包是不是真的子包(https://stackoverflow.com/questions/23521857/design-of-java-classes-and-packages/23522042#23522042) – awksp
因爲Java設計者決定等等。這是有道理的。大多數時候,你主要使用的類是在包樹的頂層(javax.swing中,例如),以及其它包主要包含由根包在內部使用的類。如果有遞歸,進口org.hibernate作爲*,例如,將導入數百無用類,將雜亂的命名空間,並可能導致與其他類的衝突。無論如何,明星進口被認爲是不好的做法。使用Ctrl-Shift-O,Eclipse將導入你所需要的。 –
儘量避免'進口*'(星號)的形式。 – Braj