Почему не работает статический импорт?
Перешел к изучению статического импорта в Java. Создал класс A в котором есть статический метод B выводящий на консоль строку "Hi!". После этого создал класс Prog278 в который пытаюсь импортировать статический метод B но компилятор выдает ошибки указанные ниже. Подскажите как все таки импортировать данный статический метод в мою программу?
Класс со статическим методом
class A {
public static void B () {
System.out.println ("Hi!");
}}
Класс в который импортируется статический метод
import static A.B;
class Prog278 {
public static void main (String args[]) {
B();
}}
Ответы (1 шт):
Согласно спецификации языка, в объявлении импорта должно использоваться полное (англ. qualified) имя класса, то есть имя класса с указанием имени пакета. См. спецификацию:
The name must be qualified (§6.5.5.2), or a compile-time error occurs.
Пакет по умолчанию (англ. default package) (то есть пакет, к которому относятся классы, в которых не указано имя пакета), не имеет имени. Следовательно, классы, в которых не указано имя пакета, не могут иметь полного имени, поэтому их импортировать невозможно.
Поместите ваши классы в какую-нибудь директорию внутри вашей директории с исходниками, и добавьте в них объявление пакета с именем этой директории, что-то типа такого:
package mypackage;
class A {
public static void B () {
System.out.println ("Hi!");
}
}
package mypackage;
import static mypackage.A.B;
public class C {
public static void main(String[] args) {
B();
}
}
и всё заработает.
И кстати, не называйте методы (а также переменные и параметры методов) именами, начинающимися с большой буквы. Есть определенные соглашения, и несоблюдение их путает (и, следовательно, раздражает) читателей вашего кода. Погуглите "java naming conventions".
