Избегайте повторного импорта в Java: наследовать импорт? - PullRequest
12 голосов
/ 11 января 2010

Есть ли способ "наследовать" импорт?

Пример:

Общее перечисление:

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 ]

15 голосов
/ 11 января 2010

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

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

3 голосов
/ 11 января 2010

Если вы используете Eclipse, используйте «Организовать импорт» ( Ctrl + Shift + O ), чтобы позволить IDE выполнить импорт за вас ( или используйте завершение кода ( Ctrl + Пробел )

3 голосов
/ 11 января 2010

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

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

public Sub extends Base {
    public Sub() {
        register(Constant.TWO, "blabla"); // without import: Constant.TWO
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...