Этот вопрос уже имеет ответ здесь:
Действительно ли возможно импортировать класс в Java, который находится в пакете по умолчанию? Если так, каков синтаксис? Например, если Вы имеете
package foo.bar;
public class SomeClass {
// ...
в одном файле можно записать
package baz.fonz;
import foo.bar.SomeClass;
public class AnotherClass {
SomeClass sc = new SomeClass();
// ...
в другом файле. Но что, если SomeClass.java не содержит объявление пакета? Как Вы обратились бы к SomeClass
в AnotherClass
?
Нельзя импортировать классы из пакета по умолчанию. Вы должны избегать использования пакета по умолчанию, за исключением очень маленьких примеров программ.
Из спецификации языка Java Java:
Это компиляция ошибка во времени для импорта типа из безымянный пакет.
Это невозможно.
Альтернативой является использование отражения:
Class.forName("SomeClass").getMethod("someMethod").invoke(null);
Как сказали, это плохая практика, но если у вас нет выбора, потому что вам нужно интегрировать со сторонней библиотекой, которая использует пакет по умолчанию, то вы можете создать свой собственный класс в пакете по умолчанию. и доступ к другому классу таким образом. Классы в пакете по умолчанию в основном разделяют одно пространство имен, поэтому вы можете получить доступ к другому классу, даже если он находится в отдельном файле JAR. Просто убедитесь, что файл JAR находится в классе.
Этот трюк не работает, если ваш класс не находится в пакете по умолчанию.
Единственный способ доступа к классам в пакете по умолчанию - из другого класса в пакете по умолчанию. В этом случае не беспокойтесь об импорте
, просто обратитесь к нему напрямую.