2010-01-11 14 views
11

Czy istnieje sposób na "dziedziczenie" importu?Unikaj powtórnych importów w Javie: Dziedzicz importowanie?

przykład:

wspólne wyliczenia:

public enum Constant{ ONE, TWO, THREE } 

klasy bazowej przy użyciu tego wyliczenia:

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

PODKLASA konieczności importu wykorzystać stałe enum dogodne (bez nazwy wyliczeniowego):

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

i inna klasa z tym samym importu ...

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

mogę użyć klasycznych statycznych stałych końcowych, ale być może istnieje sposób, aby korzystać ze wspólnego enum z tej samej wygody.

+1

Jeśli używasz IDE (słownie Eclipse), a następnie import zostaną automatycznie dodane podczas korzystania z klasy. – medopal

Odpowiedz

13

import S są tylko pomoc dla kompilatora do znalezienia zajęcia. Są aktywne dla pojedynczego pliku źródłowego i nie mają żadnego związku z mechanizmami OOP Java.

Więc nie, nie może „odziedziczyć” import s

3

Nie, nie można dziedziczyć importu. Jeśli chcesz odwołać się do typu w pliku klasy bez użycia w pełni kwalifikowanej nazwy, musisz zaimportować ją jawnie.

Ale w swoim przykładzie byłoby to dość łatwe do powiedzenia

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

Jeśli używasz Eclipse, użyj "Organizuj Imports" (Ctrl + Przesunięcie + O) pozwolić IDE wykonaj import dla Ciebie (lub uzupełniania kodu zastosowanie (Ctrl + Przestrzeń)

+2

Ewa lepiej, ustaw to jako "Zapisz akcję", aby Eclipse zorganizował je za każdym razem, gdy zapiszesz plik. To i formatowanie Save pozwala zaoszczędzić każdy cykl mózgowy myśląc o takich rzeczach :) –

+0

Bardzo dobry pomysł, całkowicie zapomnij o tym^^ – helpermethod