2010-01-11 68 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