避免在Java中重复导入:继承导入?

时间:2010-01-11 13:22:23

标签: java inheritance import enums

有没有办法“继承”进口?

示例:

Common enum:

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 {
    ...
}

我可以使用经典的静态最终常量,但也许有一种方法可以使用具有相同方便性的常用枚举。

3 个答案:

答案 0 :(得分:15)

import只是帮助编译器查找类。它们对单个源文件是活动的,与Java的OOP机制没有任何关系。

所以,不,你不能“继承”import s

答案 1 :(得分:3)

不,您无法继承导入。如果要在不使用完全限定名称的情况下引用类文件中的类型,则必须显式导入它。

但在你的例子中,说

就很容易了
public Sub extends Base {
    public Sub() {
        register(Constant.TWO, "blabla"); // without import: Constant.TWO
    }
}

答案 2 :(得分:3)

如果您正在使用Eclipse,请使用“组织导入”( Ctrl + Shift + O )让IDE执行导入为你(或使用代码完成( Ctrl + 空间