Ответ 1
Вы не можете импортировать классы из пакета по умолчанию. Вам следует избегать использования пакета по умолчанию, за исключением очень маленьких примеров программ.
Это компиляция чтобы импортировать тип из безымянный пакет.
Возможный дубликат: Как получить доступ к java-классам в пакете по умолчанию?
Можно ли импортировать класс в 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
?
Вы не можете импортировать классы из пакета по умолчанию. Вам следует избегать использования пакета по умолчанию, за исключением очень маленьких примеров программ.
Это компиляция чтобы импортировать тип из безымянный пакет.
Единственный способ доступа к классам в пакете по умолчанию - из другого класса в пакете по умолчанию. В этом случае, не утруждайте себя import
, просто обратитесь к нему напрямую.
Это невозможно.
Альтернативой является использование отражения:
Class.forName("SomeClass").getMethod("someMethod").invoke(null);
Это не ошибка компиляции! Вы можете импортировать пакет по умолчанию только в класс пакета по умолчанию.
Если вы сделаете это для другого пакета, то это будет ошибка компиляции.
Как говорили другие, это плохая практика, но если у вас нет выбора, потому что вам нужно интегрироваться с сторонней библиотекой, использующей пакет по умолчанию, тогда вы можете создать свой собственный класс в пакете по умолчанию и таким образом получить доступ к другому классу. Классы в пакете по умолчанию в основном используют одно пространство имен, поэтому вы можете получить доступ к другому классу, даже если он находится в отдельном файле JAR. Просто убедитесь, что файл JAR находится в пути к классам.
Этот трюк не работает, если ваш класс не находится в пакете по умолчанию.