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

避免在Java中重复导入:继承导入?,java,inheritance,import,enums,Java,Inheritance,Import,Enums,有没有“继承”导入的方法 示例: 通用枚举: public enum Constant{ ONE, TWO, THREE } 使用此枚举的基类: public class Base { protected void register(Constant c, String t) { ... } } 需要导入以方便使用枚举常量的子类(无枚举名称): 和另一个具有相同导入的类 import static Constant.*; // want to avoid this

有没有“继承”导入的方法

示例:

通用枚举:

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 AnotherSub extends Base {
    ...
}

我可以使用经典的静态final常量,但也许有一种方法可以同样方便地使用公共枚举。

不,您不能继承导入。如果要引用类文件中的类型而不使用完全限定名,则必须显式导入它

但在你的例子中,这很容易说出来

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

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


因此,不,您不能“继承”
import
s

如果您使用Eclipse,请使用“组织导入”(Ctrl+Shift+O)让IDE为您进行导入(或使用代码完成(Ctrl+Space)

如果您使用IDE(比如Eclipse),则在使用该类时会自动添加导入。更好的是,将其设置为“保存操作”因此,每次保存文件时,Eclipse都会对它们进行组织。这一点和“保存”上的格式设置有助于节省思考此类事情的大脑周期:)
public Sub extends Base {
    public Sub() {
        register(Constant.TWO, "blabla"); // without import: Constant.TWO
    }
}