Ответ 1
import
- это просто помощь компилятору для поиска классов. Они активны для одного исходного файла и не имеют никакого отношения к механизмам Java OOP.
Итак, нет, вы не можете "наследовать" import
s
Есть ли способ "наследовать" импорт?
Пример:
Общее перечисление:
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 {
...
}
Я мог бы использовать классические статические конечные константы, но, возможно, есть способ использовать общее перечисление с тем же удобством.
import
- это просто помощь компилятору для поиска классов. Они активны для одного исходного файла и не имеют никакого отношения к механизмам Java OOP.
Итак, нет, вы не можете "наследовать" import
s
Нет, вы не можете наследовать импорт. Если вы хотите ссылаться на тип внутри файла класса без использования полного имени, вам необходимо явно его импортировать.
Но в вашем примере было бы легко сказать
public Sub extends Base {
public Sub() {
register(Constant.TWO, "blabla"); // without import: Constant.TWO
}
}
Если вы используете Eclipse, используйте "Organize Imports" (Ctrl + Shift + O), чтобы позволить IDE делать импорт для вас (или использовать завершение кода (Ctrl + Space)