Подтвердить что ты не робот

Избегайте повторного импорта в 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 {
    ...
}

Я мог бы использовать классические статические конечные константы, но, возможно, есть способ использовать общее перечисление с тем же удобством.

4b9b3361

Ответ 1

import - это просто помощь компилятору для поиска классов. Они активны для одного исходного файла и не имеют никакого отношения к механизмам Java OOP.

Итак, нет, вы не можете "наследовать" import s

Ответ 2

Нет, вы не можете наследовать импорт. Если вы хотите ссылаться на тип внутри файла класса без использования полного имени, вам необходимо явно его импортировать.

Но в вашем примере было бы легко сказать

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

Ответ 3

Если вы используете Eclipse, используйте "Organize Imports" (Ctrl + Shift + O), чтобы позволить IDE делать импорт для вас (или использовать завершение кода (Ctrl + Space)