2010-01-11 50 views
11

有沒有辦法「繼承」進口?避免在Java中重複導入:繼承導入?

實施例:

普通的枚舉:使用該枚舉

public enum Constant{ ONE, TWO, THREE } 

基類:

public class Base { 
    protected void register(Constant c, String t) { 
     ... 
    } 
} 

子類需要導入使用枚舉常數方便(無枚舉名):

import static Constant.*; // want to avoid this line! 
public Sub extends Base { 
    public Sub() { 
     register(TWO, "blabla"); // without import: Constant.TWO 
    } 
} 

,並用相同的導入另一個類...

import static Constant.*; // want to avoid this line! 
public AnotherSub extends Base { 
    ... 
} 

我可以使用傳統的靜態的最後常數,但也許沒有使用常見的枚舉用同樣的便利的方式。

+1

如果使用IDE(Eclipse的說),那麼進口將當您使用類自動添加。 – medopal 2010-01-11 13:35:23

回答

13

import s爲剛剛編譯器查找類的輔助工具。它們對於單個源文件是活躍的,並且與Java的OOP機制沒有任何關係。

所以,不,你不能「繼承」 import小號

3

不,您不能繼承導入。如果您想在不使用完全限定名稱的情況下引用類文件中的類型,則必須明確導入它。

但在你的例子這將是很容易的說

public Sub extends Base { 
    public Sub() { 
     register(Constant.TWO, "blabla"); // without import: Constant.TWO 
    } 
} 
3

如果你正在使用Eclipse,使用 「組織導入」(按Ctrl + + Ø)讓IDE做進口您(或使用代碼完成(按Ctrl +空間

+2

夏娃更好的是,將其設置爲「Save Action」,以便Eclipse在每次保存文件時對其進行組織。這和保存格式有助於節省任何思考這種事情的大腦週期:) – 2010-01-11 14:12:42

+0

非常好的主意,完全忘記那^^ – helpermethod 2010-01-11 16:58:52